将整数从文本文件放入列表中

问题描述 投票:2回答:1

我有一个文本文件,我需要将这个文件中的数字放入这样的列表中:[[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'不在原始文件中。

有人知道为什么会发生这种情况以及如何解决它,还是有一种更有效的方法将文本文件中的数字放入列表中?

python list text-files
1个回答
0
投票

您可以使用正则表达式实现预期的输出。

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)

上面的代码中有两个print语句,一个将给出字符串列表的列表,转换后将给出整数列表的列表。Output

最新问题
© www.soinside.com 2019 - 2024. All rights reserved.