gpt4 book ai didi

python - shlex:在 Python 3 中转义引号

转载 作者:行者123 更新时间:2023-11-28 17:27:18 25 4
gpt4 key购买 nike

我想拆分ascii文本

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'"]

还是不对。

编辑:示例字符串有些误导。它也应该能够 split ,比如说

>>> l1 = "C12 H2 'Hello friend'"

shlex 获取 l1 没问题。

最佳答案

您可以使用 posix 模式和 escapedquotes'" 而不仅仅是 "

>>> line = "1 'K\\^o, Suk\\'e'\n"
>>> lexer = shlex.shlex(line, posix=True)
>>> lexer.escapedquotes = "'\""
>>> list(lexer)
['1', "K\\^o, Suk'e"]

关于python - shlex:在 Python 3 中转义引号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37814808/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com