Skip to main content
 首页 » 编程设计

python之在字符串列表中搜索整数

2025年05月04日19daizhj

给定以下字符串列表:

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 将不会被匹配,因为它不是一个词。