2013-10-14 48 views
0

如果我有一个字符串,例如:'我无法解析此字符',并且中间带有一个单引号,那么如何在不出现语法错误的情况下删除该字符串并返回ICANTPARSETHIS?我知道如果它是“我无法解析这个”,它会起作用,但我正在研究一个潜在的输入可能没有双引号的问题。使用Python中的单引号解析字符串

+0

引号只是字符串文字中的语法错误,可以通过适当的引用或使用三引号字符串来处理。 –

+1

但它听起来好像你正在尝试处理程序输入,而在这种情况下,它是*不是问题*。你究竟在做什么? –

+0

如果您在Python 2中使用'input()',请改用'raw_input()',避免将输入视为Python表达式。 –

回答

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回声的替代品,并根据需要逃脱报价符号。

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" 

林不知道你的问题是什么...但是这两个例子表明,你可以用内部引号解析字符串

还表明,报价都是一样的基本

1

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

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

,或者如果你有它的一个变量:

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

编辑:正如指出的第二个例子是没有对单引号转义字符语法错误。

+1

您的第二个示例是语法错误 –

+0

我忘记了转义字符,但是基本上将字符串设置为双引号,并且单引号仍然存在。 – actionseth

+0

**正好**,这说明OP不知道这里发生了什么。你呢? –