[英]Python Split a String using more than one character while still keeping that character
我已经看到许多使用re.split
解决方案,但它并没有解决我的问题。 我希望能够拆分我的字符串并将某些字符保留在列表中......很难解释,但这里有一个例子:
文本:
'print("hello world");'
我想要的结果:
["print", "(", "\"", "hello", "world", "\"", ")", ";"]
像 re.split 这样的事情会给我:
["print", "hello", "world"]
我怎样才能得到想要的结果?
你可以试试这个。
import re
text='print("hello world");'
parsed=re.findall(r'(\w+|[^a-zA-Z\s])',text)
print(parsed)
#['print', '(', '"', 'hello', 'world', '"', ')', ';']
\\w+
- 捕获每个单词。
[^a-zA-Z\\s]
- 捕获不在[a-zA-Z]
且不是空格的所有内容。
编辑:当您想捕获数字和浮点数时,请使用此re
表达式\\d+\\.\\d+|\\d+|\\w+|[^a-zA-Z\\s]
\\d+
- 捕获数字\\d+\\.\\d+
- 捕获浮点数。
a='print("hello world",[1,2,3,4,3.15]);'
print(re.findall('\d+\.\d+|\d+|\w+|[^a-zA-Z\s]',a)
#['print', '(', '"', 'hello', 'world', '"', ',', '[', '1', ',', '2', ',', '3', ',', '4', ',', '3.15', ']', ')', ';']
尝试这个:
import re
re.findall(r"[A-Za-z@#]+|\S", 'print("hello world");')
Out[19]: ['print', '(', '"', 'hello', 'world', '"', ')', ';']
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.