#python #list #text-files
#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)
Как я могу этого добиться?
Ответ №1:
Если у вас есть строка:
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
.
Ответ №2:
В вашем случае это добавление одного элемента в список. Желаемый результат содержит 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(',')])
Ответ №3:
Попробуйте
(при условии, что в вашем файле 1 строка текста)
with open('data.txt') as f:
nums = [int(x) for x in f.readline().strip().split(',')]
print(nums)
Ответ №4:
Если вы хотите преобразовать строку в код Python, вы можете использовать eval(list(line))
, даже если я не рекомендую это по соображениям безопасности.
dTags = []
with open("tagNumbersToTest.txt") as file:
for line in file:
line = line.strip()
dTags.append(list(eval(line)))
dTags
это будет список списков, но затем вы можете манипулировать им или изменять текстовый файл, чтобы получить желаемый результат.
Комментарии:
1. удалось заставить его работать, используя другой ответ, спасибо, хотя