在Python中将元组字符串列表转换为元组

2024-04-19 10:53:19 发布

您现在位置:Python中文网/ 问答频道 /正文

如何转换以下列表:

start = ['foo 1/ bar 2', 'foo 2/ bar 3', 'foo 34/ bar 45']

到以下元组列表:

^{pr2}$

我开始尝试这样做:

finish = tuple([x.translate(None,'foobar ').replace('/',',') for x in start])

但仍然不完整,而且越来越难看。在


Tags: innone列表forfoobarstartreplace
3条回答
start = ['foo 1/ bar 2', 'foo 2/ bar 3', 'foo 34/ bar 45']
finish = [(int(b[:-1]), int(d)) for a, b, c, d in map(str.split, start)]

map使用split将每个字符串拆分为一个列表,['foo', '1/', 'bar', '2']。然后我们将列表的四个部分分配给变量,并操作我们关心的变量来生成整数。在

有机会使用^{}和一个很好的列表理解能力:

import re

start = ['foo 1/ bar 2', 'foo 2/ bar 3', 'foo 34/ bar 45']

r = [tuple(int(j) for j in re.findall(r'\d+', i)) for i in start]
print(r)
# [(1, 2), (2, 3), (34, 45)]

如果初始列表的结构发生了变化,re.findall仍将捕获所有int,而不是手动拆分和操作字符串。在

你的问题只有一句话可以回答:

finish = [(int(s.split(' ')[1][:-1]),int(s.split(' ')[3])) for s in start]

相关问题 更多 >