尝试以正确的形式获取列表中的所有匹配项。 例如:
import re
regex = re.compile(r'(\d{1,4})')
text = ['(261, 264)', '(458, 393)', '(960, 540)', '(542, 424)', '(541, 424)']
print(regex.findall(text[0]))
print(list(filter(regex.findall, text)))
输出:
['261', '264']
['(261, 264)', '(458, 393)', '(960, 540)', '(542, 424)', '(541, 424)']
我正在尝试以与顶部相同的格式获取底部(不带括号或逗号)。这可能吗?我似乎无法获得这些函数来返回列表中的所有匹配项(我想尽可能在1行中使它像list(filter())一样)
编辑:: 所需的输出:
['261', '264', '458', '393', '960', '540', '542', '424', '542', '424']
答案 0 :(得分:0)
尝试一下:
import re
regex = re.compile(r'(\d{1,4})')
text = ['(261, 264)', '(458, 393)', '(960, 540)', '(542, 424)', '(541, 424)']
print(regex.findall(text[0]))
print([elem for tup in map(regex.findall, text) for elem in tup])
答案 1 :(得分:0)
合并所有匹配项(通过遍历所有匹配项)的列表理解:
import re
regex = re.compile(r'(\d{1,4})')
text = ['(261, 264)', '(458, 393)', '(960, 540)', '(542, 424)', '(541, 424)']
print([x for t in text for x in regex.findall(t)])
答案 2 :(得分:0)
这是我的解决方案:
这将为您带来以下结果:
[['261', '264'],
['458', '393'],
['960', '540'],
['542', '424'],
['541', '424']]
哪一个会让您得到想要的结果
['261', '264', '458', '393', '960', '540', '542', '424', '541', '424']
import itertools
import re
original_list = ['(261, 264)', '(458, 393)', '(960, 540)', '(542, 424)', '(541, 424)']
regex = re.compile(r"\d\d\d")
matches_per_element = [regex.findall(txt) for txt in original_list]
flattened_list = list(itertools.chain(*matches_per_element))
### Display the result
print(flattened_list)
>>> ['261', '264', '458', '393', '960', '540', '542', '424', '541', '424']