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ありません。

4

2 に答える 2

2

posixモードを使用して、代わりにescapedquotestoを使用できます'""

>>> line = "1 'K\\^o, Suk\\'e'\n"
>>> lexer = shlex.shlex(line, posix=True)
>>> lexer.escapedquotes = "'\""
>>> list(lexer)
['1', "K\\^o, Suk'e"]
于 2016-06-14T15:46:30.103 に答える