我正在尝试标记一些代码,并希望在分割字符串时保留定界符。
例如,我想保留.
,(
,)
,;
,~
的任何出现。
我一直在使用re.split:
line = 'Keyboard.keyPressed();'
re.split(r'([\.\(\)\;\~])', line)
但是,我当前的re.split实现当前在数组中创建了一些不必要的空字符串:
['Keyboard', '.', 'keyPressed', '(', '', ')', '', ';', '']
如何解决此问题以排除空字符串?
答案 0 :(得分:1)
为清楚起见,请保持拆分简单,只需删除空字符串即可。
import re
line = 'Keyboard.keyPressed();'
split = re.split(r'([\.\(\)\;\~])', line)
cleared = list(filter(None, split)) # <- Add this line
print(cleared)
<script type="text/javascript" src="//cdn.datacamp.com/dcl-react.js.gz"></script>
<div data-datacamp-exercise data-lang="python">
<code data-type="sample-code">
import re
line = 'Keyboard.keyPressed();'
split = re.split(r'([\.\(\)\;\~])', line)
cleared = list(filter(None, split))
print(cleared)
</code>
</div>
答案 1 :(得分:0)
您可以使用
re.findall(r'[^.();~]+|[.();~]', line)
请参见regex demo
re.findall
将返回输入字符串中所有匹配的不重叠子字符串的列表,与以下内容匹配:
[^.();~]+
-+
,.
,(
,)
和{ {1}} ;
-或~
-一次出现|
,[.();~]
,.
,(
或)
。;