请原谅我,我是Python的新手。我编写了一个简单的脚本来解析一个长字符串,该字符串包含多个用单引号括起来的子字符串。我使用str.replace
将单引号替换为空字符串。但是,输入字符串将改为使用双引号。我无意中用新的输入运行了脚本,令我惊讶的是,它仍然将所有双引号都替换为空字符串。
我想我在Python的某个地方读到过,双引号和单引号是一样的。这是正确的说法吗?
更新:
我道歉。我一定是把别人搞糊涂了,包括我自己。我运行了快速测试脚本来验证我从原始脚本中看到的输出,但是我没有看到相同的输出。我尝试用str.replace("'","")
替换包含双引号的输入字符串(例如str="foo \"abc\" \"efg\""
),但没有成功。我不得不重新检查它试图解析的原始脚本和输入字符串。感谢您花时间查看这个帖子。
我只是验证了原始脚本的一部分(相当长并且有点复杂,因为我说我没有在我的问题的上下文中讲述关于这个脚本的全部事实,我对此感到抱歉)误导我相信(在一段时间内) Python str.replace
以同样的方式处理双引号和单引号,这是错误的假设。
发布于 2018-08-10 01:57:57
在python中,它们被同等对待。但这意味着,就语言而言,您可以使用单引号或双引号。然而,它们不是相同的字符。如果你有,例如。
text = "I said 'hello' to him"
所以,如果你运行
text.replace("'", "")
这些单引号将被替换。但如果你这样做了
text.replace('"', "")
不会发生任何事情,因为您的字符串不包含双引号
发布于 2018-08-10 01:59:05
在您的代码中,单引号和双引号的处理方式相同。换句话说,
'Hello' == "Hello"
无论你使用的是'
还是"
都没有区别。
但是,假设您有一个包含字符'
或"
的字符串
long_string = "So I said 'and what do you mean by that?' and she responded 'I dunno' and ..."
这是一个包含'
字符的字符串。注意,我在代码中使用"
作为字符来指定这个字符串;因此,我可以在字符串中使用'
字符,而不必对它们进行转义。反过来也是一样的:
>>> print( '"' ) # "
>>> print( "'" ) # '
如果要在双引号字符串中包含双引号字符,则必须对其进行转义:
>>> print( "\"" ) # "
>>> print( '\'' ) # '
现在,回到你的问题上。您有一个像long_string
这样的字符串,其中包含单引号字符。要删除它们,您可以简单地执行以下操作
string_without_quotes = long_string.replace( "'", "" ) # or '\''
https://stackoverflow.com/questions/51773139
复制相似问题