[英]Converting a list of strings of numbers to tuples with integers Python3
例子:
我的系统上保存了一个名为data.txt
的文件。 该文件包含以下信息:
'Noah,14,233,66,21,88,42'
'Robert,34,11,667,2,785,23'
'Jackson,85,22,73,12,662,5'
等等,
我的问题是我怎样才能把它变成一个带整数的元组?,所以这是需要的:
('Noah', [14,233,66,21,88,42] ),
('Robert', [34,11,667,2,785,23] )
我假设您必须为每一行使用 for 循环,但我无法弄清楚。 任何帮助,将不胜感激!
如果您想要完全相同的输出,您可以在 上拆分每一行,
并将其存储在一个元组中,
x = 'Noah,14,233,66,21,88,42'
# split string on ,
x = x.strip().split(',')
# x[0] is name, while x[1]....x[n] are numbers
y = (x[0], x[1:])
print(y)
输出,
('Noah', ['14', '233', '66', '21', '88', '42'])
显然你需要先分别从文件中读取每一行,所以,
with open("file_name", "r") as file:
for line in file:
line = line.strip().split(',')
output = (line[0], line[1:])
将输出,
('Noah', ['14', '233', '66', '21', '88', '42'])
('Robert', ['34', '11', '667', '2', '785', '23'])
('Jackson', ['85', '22', '73', '12', '662', '5'])
同意其他人的观点,字典可能最适合这种情况,但这应该可以实现您的目标:
data= """Noah,14,233,66,21,88,42
Robert,34,11,667,2,785,23
Jackson,85,22,73,12,662,5"""
[(row.split(',')[0], row.split(',')[1:]) for row in data.split('\n')]
[('Noah', ['14', '233', '66', '21', '88', '42']),
('Robert', ['34', '11', '667', '2', '785', '23']),
('Jackson', ['85', '22', '73', '12', '662', '5'])]
假设文本与您在问题中所拥有的完全相同:
import re
input = """
'Noah,14,233,66,21,88,42'
'Robert,34,11,667,2,785,23'
'Jackson,85,22,73,12,662,5'
"""
lines = re.findall("'.*'", input) # Find lines which contain text between single quotes
tuples = []
for line in lines:
line = line.replace("'", "").split(",") # Remove single quotes, split by comma
tuples.append((line[0], line[1:])) # Add to tuple
print(tuples)
哪个会打印:
[
('Noah', ['14', '233', '66', '21', '88', '42']),
('Robert', ['34', '11', '667', '2', '785', '23']),
('Jackson', ['85', '22', '73', '12', '662', '5'])
]
首先,我们获取所有包含在两个单引号之间的行。 然后取出单引号并通过用逗号将其拆分来创建一个数组。 最后用第一个元素和第二个到最后一个元素的子数组创建一个元组。
你可以试试这个:
with open(data.txt, 'r') as f:
lines = [(line.strip().split(',')[0], line.strip().split(',')[1:])for line in f]
print(lines)
它将以您描述的格式返回元组列表。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.