【发布时间】:2021-03-23 21:01:27
【问题描述】:
我正在尝试获取一个字符串列表:
string = "A1B3C3D4"
list = ["A1","B2","C3","D4"]
什么是实现它的pythonic方法?
提前致谢
【问题讨论】:
-
邮政编码,否则我们无能为力
-
您要提取的模式在示例中并不清楚。您是否希望每对字符或 AB123 之类的字符都可以出现在您的列表中?
我正在尝试获取一个字符串列表:
string = "A1B3C3D4"
list = ["A1","B2","C3","D4"]
什么是实现它的pythonic方法?
提前致谢
【问题讨论】:
您可以使用re.findall 查找给定字符串中模式[A-Z]\d 的所有非重叠匹配项。
import re
regex = r"[A-Z]\d"
string = "A1B3C3D4"
result = re.findall(regex, string)
print(result)
输出:
['A1', 'B3', 'C3', 'D4']
【讨论】:
您可以在列表理解中使用 re.findall:
import re
lst = [x for x in re.findall(r"[A-Z]\d", string)]
执行上述代码后,你会得到:
lst = ['A1', 'B3', 'C3', 'D4']
【讨论】:
re.findall 本身返回一个列表。为什么要从同一个列表中创建一个新列表?
也许你可以使用这个例子:
word = 'CatBatSatFatOr'
print([word[i:i+3] for i in range(0, len(word), 3)])
Output:
['Cat', 'Bat', 'Sat', 'Fat', 'Or']
【讨论】: