防止 shlex 用冒号 (:) 分裂
Prevent shlex from splitting with colon (:)
我在处理 shlex 中的冒号 (:) 时遇到问题。我需要以下行为:
示例输入
text = 'hello:world ("my name is Max")'
s = shlex.shlex(instream=text, punctuation_chars=True)
s.get_token()
s.get_token()
...
期望输出
hello:world
(
"my name is Max"
)
当前输出
hello
:
world
(
"my name is Max"
)
Shlex 将冒号放在一个单独的标记中,我不希望这样。该文档对冒号的说明不多。我试图将它添加到 wordchar 属性,但它弄乱了所有内容并用逗号分隔单词。我还尝试将 punctuation_char 属性设置为仅带有括号的自定义数组:["(", ")"] 但这没有任何区别。我需要设置 punctuation_char 选项以将括号作为单独的标记(或实现此输出的任何其他选项)。
任何人都知道我怎样才能让它工作?任何帮助将不胜感激。
我正在使用 python 3.6.9,如果需要可以升级到 python 3.7.X。
为了让shlex
把:
当作一个字符,你需要在wordchars
中添加:
:
>>> text = 'hello:world ("my name is Max")'
>>> s = shlex.shlex(instream=text, punctuation_chars=True)
>>> s.wordchars += ':'
>>> while True:
... tok = s.get_token()
... if not tok: break
... print(tok)
...
hello:world
(
"my name is Max"
)
我用 Python 3.6.9 和 3.8.0 测试过。我认为您需要 Python 3.6 才能获得 punctuation_chars
初始化参数。
我在处理 shlex 中的冒号 (:) 时遇到问题。我需要以下行为:
示例输入
text = 'hello:world ("my name is Max")'
s = shlex.shlex(instream=text, punctuation_chars=True)
s.get_token()
s.get_token()
...
期望输出
hello:world
(
"my name is Max"
)
当前输出
hello
:
world
(
"my name is Max"
)
Shlex 将冒号放在一个单独的标记中,我不希望这样。该文档对冒号的说明不多。我试图将它添加到 wordchar 属性,但它弄乱了所有内容并用逗号分隔单词。我还尝试将 punctuation_char 属性设置为仅带有括号的自定义数组:["(", ")"] 但这没有任何区别。我需要设置 punctuation_char 选项以将括号作为单独的标记(或实现此输出的任何其他选项)。
任何人都知道我怎样才能让它工作?任何帮助将不胜感激。 我正在使用 python 3.6.9,如果需要可以升级到 python 3.7.X。
为了让shlex
把:
当作一个字符,你需要在wordchars
中添加:
:
>>> text = 'hello:world ("my name is Max")'
>>> s = shlex.shlex(instream=text, punctuation_chars=True)
>>> s.wordchars += ':'
>>> while True:
... tok = s.get_token()
... if not tok: break
... print(tok)
...
hello:world
(
"my name is Max"
)
我用 Python 3.6.9 和 3.8.0 测试过。我认为您需要 Python 3.6 才能获得 punctuation_chars
初始化参数。