我的正则表达是可怕的。我有列表项看起来像这样
device = ['1U1abc']
device = ['18U12def']
我想将项目分开,看起来像这样
device = ['1','U1','abc']
device = ['18','U12','def']
所以我有一个字符串中第一个数字的条目,带有字母和数字的代码,以及包含所有字母的第二个代码。正则表达式是一个很好的方法来获得这个吗?
答案 0 :(得分:5)
使用:
>>> re.findall(r'(^\d+|U\d+|[a-z]+)', device[0])
['1', 'U1', 'abc']
答案 1 :(得分:0)
使用正则表达式。
<强>演示:强>
import re
device = ['1U1abc', '18U12def']
for i in device:
m = re.search("(?P<firstValue>\d+)(?P<secondVal>U\d+)(?P<thirdVal>\w+)", i)
if m:
print(m.group('firstValue'))
print(m.group('secondVal'))
print(m.group('thirdVal'))
print("-------------")
<强>输出:强>
1
U1
abc
-------------
18
U12
def
-------------
答案 2 :(得分:-1)
试试这个:
import re
devices = ['1U1abc', '18U12def']
rex = '(\d+)(\w\d+)(\w+)'
r = re.compile(rex)
[r.findall(device) for device in devices]
因此。我猜你会处理一个字符串列表,这可能很方便。使用regex101.com来组成并检查正则表达式。预编译它可以节省大量的解析列表。