我有一个文本文件,我需要将这个文件中的数字放入这样的列表中:[[123,456],[234,567],[345,678]...]
,但是当我遇到下面显示的一些错误消息时,我不知道该怎么做。
我的文本文件看起来像这样(-->
是原始文本文件中的箭头,但是如果我使用with open
读取文件,我不知道它们的外观:
# These are the ids for blablabla
# put the ids into a list like this [[123,456],[234,567],[345,678]...]
#id1 --> id2
#123 --> 456
#234 --> 567
#345 --> 678
#456 --> 789
我最初尝试做的是
with open('mytxt.txt', 'r') as f:
for line in range(3):
next(f)
for line in f:
lst = list(map(int,line.split(',')))
print(lst)[:10]
运行此代码后,我收到一条错误消息<!-- language: lang-js --> invalid literal for int() with base 10: '123\t456\n'
,因此我考虑通过运行以下代码在每行末尾剥离'\n'
和't'
:
with open('ca-GrQc.txt', 'r') as f:
for line in range(4):
next(f)
for line in f:
lst = list(map(int,line.strip('\n').strip('t').split(',')))
print(lst)[:10]
[运行后,我仍然收到错误消息invalid literal for int() with base 10: '123\t456'
,但我不知道't'
的来源(并且我确信't'
不在原始文件中。
有人知道为什么会发生这种情况以及如何解决它,还是有一种更有效的方法将文本文件中的数字放入列表中?
您可以使用正则表达式实现预期的输出。
import re
file1 = open("names_file.txt", "r")
l = file1.readlines()
new_list = []
for i in l:
m = re.findall(r'\d+', i)
new_list.append(m)
print(new_list)
上面的代码将给出一个包含字符串的列表,如果要将其转换为整数类型,请添加此代码。这将提供您的预期输出。
for j in range(len(new_list)):
for k in range(2):
new_list[j][k] = int(new_list[j][k])
print(new_list)