将数字文本文件读入不带单引号的列表 Python

read in text file of numbers to a list without the single quotes Python

当我读入一个数字文本文件时:

1, 2, 3, 4, 5, 6, 7, 8

列表创建如下:

dTags = ['1, 2, 3, 4, 5, 6, 7, 8']

我不想要列表开头和结尾的单引号,所以我只希望它像这样:

dTags = [1, 2, 3, 4, 5, 6, 7, 8]

这是我使用的代码:

dTags = []
with open("tagNumbersToTest.txt") as file:
    for line in file: 
        line = line.strip() #or some other preprocessing
        dTags.append(line) #storing everything in memory!

#print(dTags)

我怎样才能做到这一点?

如果你有一行:

line = "1, 2, 3, 4, 5, 6, 7, 8"

您可以使用以下方式附加整数列表:

dTags.append([int(x) for x in line.split(",")])

这将附加一个列表,例如:

[1, 2, 3, 4, 5, 6, 7, 8]

那么您的 dTags 将是一个列表列表。相反,如果您希望将所有行连接为一个列表而不是列表列表,请使用 extend 而不是 append.

尝试
(假设您的文件中有 1 行文本)

with open('data.txt') as f:
  nums = [int(x) for x in f.readline().strip().split(',')]
  print(nums)

在您的例子中,它是将单个项目附加到列表中。您想要的输出包含 5 个元素。您可以尝试的一件事是 -

dTags = []
with open("tagNumbersToTest.txt") as file:
    for line in file: 
        dTags.extend(line.split(','))

输出-

['1', ' 2', ' 3', ' 4', ' 5']

要获取所有整数值而不是字符串,那么您可以添加以下行,前提是所有元素都是 int 数据类型。

dTags_list = [int(i) for i in dTags]

输出-

[1, 2, 3, 4, 5]

总结你的代码-

    dTags = []
    with open("tagNumbersToTest.txt") as file:
        for line in file: 
            dTags.extend([int(i) for i in line.split(',')])

如果您想将字符串转换为 Python 代码,您可以使用 eval(list(line)) 即使出于安全原因我不推荐它。

dTags = []
with open("tagNumbersToTest.txt") as file:
    for line in file: 
        line = line.strip()
        dTags.append(list(eval(line)))

dTags 将是一个列表列表,但您可以对其进行操作或修改文本文件以获得所需的输出。

https://docs.python.org/3/library/functions.html#eval