0

如果我有一个字符串,如:'I can't parse this',中间有一个单引号,我怎样才能在不出现语法错误的情况下删除它,并返回 ICANTPARSETHIS?我知道如果它是“我无法解析这个”,它会起作用,但我正在研究一个问题,即潜在输入可能没有双引号包围它。

4

3 回答 3

4

你在这里误解了一些东西。这里完全没有问题。

语法错误仅适用于源代码。字符串值不是源代码。

如果您的源代码使用字符串文字,Python 会解析这些文字并生成字符串。字符串文字中可能有语法错误,但如果没有错误,它将产生一个字符串值,就是那个值。

在 Python 解释器中,此类字符串值使用与字符串文字相同的格式表示,以便于调试和复制回解释器。请放心,Python 解释器知道如何正确转义此类值中的引号:

>>> """Text with a single quote: '"""
"Text with a single quote: '"""
>>> """We can use a double quote too: ". See?"""
'We can use a double quote too: ". See?'
>>> """Even mixing " and ' is not a problem."""
'Even mixing " and \' is not a problem.'

我在那里使用了三引号文字语法,但 Python 会回显使用所需最小引用样式的替代方案,并根据需要转义引号符号。

于 2013-10-14T16:42:08.323 回答
2
print "Parse 'this string' to something".split()
print re.findall(some_pattern,"this is a string with `internal quotation` marks")
print 'quotes' == "quotes" == """quotes""" == '''quotes''' == u'quotes' == u"quotes"

我不确定您的问题是什么……但这两个示例表明您可以解析带有内部引号的字符串

也证明了报价基本上都是一样的

于 2013-10-14T16:38:10.260 回答
1

所以我的理解是你想删除“不能”上的撇号?

'I can't parse this'.replace("'", "")
>>> 'I cant parse this'

或者如果你有一个变量:

s = 'I can\'t parse this'
s.replace("'", "")
>>> 'I cant parse this'

编辑:正如指出的第二个例子是一个语法错误,撇号上没有转义字符。

于 2013-10-14T16:40:11.550 回答