繁体   English   中英

包含字符串文字的Tokenise行

[英]Tokenise line containing string literals

使用str.split"print 'Hello, world!' times 3" "print 'Hello, world!' times 3"返回列表["print", "'Hello,", "world!'", "times", "3"] 但是,我想要结果["print", "'Hello, world!'", "times", "3"] 我怎样才能做到这一点?

如果要从split中排除引号中的单词,则可以使用shlex.split

import shlex

s = "print 'Hello, world!' times 3"
print(shlex.split(s))
# ['print', 'Hello, world!', 'times', '3']

如果需要,此正则表达式将捕获引号。

import re

s = "print 'hello, world!' 3 times"
re.findall(r'(\w+|\'.+\')',s)

.split()函数根据定界符分割str 默认的分隔符是blank space 它不在乎字符串中的' 如果您想将''单词视为一个单词。 您应该使用shlex库,或者可以编写regex表达式。 当然, split()并不是您想要的。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM