我要拆分的ASCII文本shlex:Python中逃脫引號3
1 'K\^o, Suk\'e'
被打印爲Python字符串
line = "1 'K\\^o, Suk\\'e'\n"
到
['1', 'K\\^o, Suk\\'e']
shlex.split(line)
不工作,給出ValueError("No closing quotation")
。
我嘗試添加到wordchars
如下:
>>> lexer = shlex.shlex(line)
>>> lexer.wordchars += "\\'"
>>> list(lexer)
['1', "'K\\", '^', 'o', ',', "Suk\\'e'"]
但同樣,這不是我的本意。
沒有報價,一切正常:
>>> line2= "1 'K\\^o, Suk\\e'\n"
>>> shlex.split(line2)
['1', 'K\\^o, Suk\\e']
如何這個問題能解決?
編輯:我來最接近的是:
>>> lexer = shlex.shlex(line)
>>> lexer.wordchars += "\\'"
>>> lexer.wordchars += " "
>>> lexer.wordchars += "\\^"
>>> lexer.wordchars += ","
>>> list(lexer)
['1', "'K\\^o,", "Suk\\'e'"]
這仍然是不正確的。
編輯:示例字符串有點誤導。它也應該能夠分裂,說
>>> l1 = "C12 H2 'Hello friend'"
shlex
得到l1
沒有問題。
爲什麼它會分裂的第一空間,而不是第二個? –
@VasiliSyrakis:因爲第二個單引號內。 – jwodder
@Aquiles:我的ascii文件中的文本是'1'K \^o,Suk \'e''。當使用'f.readlines()'加載它時,它被打印爲'''K','Suk''e'\ n「'。希望這能夠澄清我的意思。 – user14717