对我来说,我是Python的新手。我编写了一个简单的脚本来分析长字符串,其中包含用单引号引起来的多个子字符串。我使用str.replace
将单引号替换为空字符串。但是,输入字符串改为用双引号引起来。我偶然用新输入运行了脚本,但令我惊讶的是,它仍然将所有双引号替换为空字符串。
我以为我在Python的某个地方阅读过,双引号和单引号被视为相同。那是正确的说法吗?
更新:
我道歉。我一定已经把这个问题包括我自己弄糊涂了。我运行了快速测试脚本以验证我从原始脚本中看到的输出,但是看不到相同的输出。我试图将包含双引号的输入字符串替换为双引号(例如,将str="foo \"abc\" \"efg\""
替换为str.replace("'","")
,但是没有这样做。我不得不重新检查原始脚本并尝试解析输入字符串。谢谢您花点时间研究这个线程。
我只是验证了原始脚本的一部分(相当长而且有点复杂,因为我没有在问题中说出这个脚本的全部真相,对此感到抱歉)误导了我相信(一段时间)Python str.replace
以相同的方式对待双引号和单引号,这是错误的假设。
答案 0 :(得分:2)
在python中,它们被视为相同。但这意味着就语言而言,您可以使用单引号或双引号。但是,它们不是同一字符。如果有例如
adjacency_df <- crossprod(table(test)
Error in table(adjacency_df) :
attempt to make a table with >= 2^31 elements
外部双引号只是分隔字符串,而内部单引号是字符串本身的一部分。因此,如果您运行
text = "I said 'hello' to him"
它们的单引号将被替换。但是如果你这样做
text.replace("'", "")
什么都没有发生,因为您的字符串不包含双引号
答案 1 :(得分:1)
单引号和双引号在您的代码中被相同的 处理。换句话说,
'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 '\''