给定以下字符串列表:
my_list = ['element0 123 321\n', 'element1 223 32221\n', 'element2 19823 328771\n', ... ]
如何将每个条目拆分为元组列表:
[ (123, 321), (223, 32221), (19823, 328771), ... ]
在我另一次糟糕的尝试中,我设法提取了数字,但遇到了一个问题,元素占位符还包含此方法包含的数字!它也不写入元组
,而是写入列表
。
numbers = list()
for s in my_list:
for x in s:
if x.isdigit():
numbers.append((x))
numbers
最佳答案
我们可以首先构建一个识别正整数的正则表达式:
from re import compile
INTEGER_REGEX = compile(r'\b\d+\b')
这里的\d
代表digit(所以0
,1
等), +
表示一个或多个,\b
是单词边界。
然后我们可以使用 INTEGER_REGEX.findall(some_string)
从输入中识别所有正整数。现在唯一剩下要做的就是遍历列表的元素,并将 INTEGER_REGEX.findall(..)
的输出转换为元组。我们可以这样做:
output = [tuple(INTEGER_REGEX.findall(l)) for l in my_list]
对于给定的样本数据,这将产生:
>>> [tuple(INTEGER_REGEX.findall(l)) for l in my_list]
[('123', '321'), ('223', '32221'), ('19823', '328771')]
请注意,不是单独单词的数字将不会被匹配。例如 'see you l8er'
中的 8
将不会被匹配,因为它不是一个词。
关于python - 在字符串列表中搜索整数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48122170/