Fat*_*kes 0 python string split
我正在尝试将字符串拆分为特定的关键字。我有一个关键字/字符列表。
例如:我有一个关键字列表 {'1', '2', '3', '4', '5', 'let', 'while'}
而且我有一个字符串 let2while4
我想输出一个包含以下内容的列表 {'let', '2', while', '4'}
这可能吗?我目前仅使用带有分隔符''
谢谢!
编辑:下面使用吉尔奇的答案适用于以下示例,但是当我输入完整的关键字时,出现以下错误:
Traceback (most recent call last):
File "parser.py", line 14, in <module>
list = re.findall(f"({'|'.join(keywords)})", input)
File "/usr/lib/python3.7/re.py", line 223, in findall
File "/usr/lib/python3.7/sre_parse.py", line 816, in _parse
p = _parse_sub(source, state, sub_verbose, nested + 1)
File "/usr/lib/python3.7/sre_parse.py", line 426, in _parse_sub
not nested and not items))
File "/usr/lib/python3.7/sre_parse.py", line 651, in _parse
source.tell() - here + len(this))
re.error: nothing to repeat at position 17
Run Code Online (Sandbox Code Playgroud)
我的完整关键字包括:
关键字= {'1','2','3','4','5','6','7','8','9','0','x','y' ,'z','+','-','*','>','(',')',';','$','let','while','else',' ='}
用于'|'.join()根据您的关键字制作正则表达式模式。
>>> keywords = {'1', '2', '3', '4', '5', 'let', 'while'}
>>> string = 'let2while4'
>>> import re
>>> re.findall('|'.join(keywords), string)
['let', '2', 'while', '4']
>>> set(_)
{'let', '2', 'while', '4'}
Run Code Online (Sandbox Code Playgroud)
如果您的关键字可能包含正则表达式控制字符,则可以re.escape()在加入之前对其进行使用。
>>> re.findall('|'.join(map(re.escape, keywords)), string)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
51 次 |
| 最近记录: |