Чтение содержимого текстового файла в список
У меня есть текстовый файл, содержащий:
1:PAPER TOWNS,TOMORROWLAND
2:ENTOURAGE,JUPITER ASCENDING
и я планирую прочитать их в список, который выводит:
[[1,'PAPERTOWNS','TOMORROWLAND'],[2,'ENTOURAGE','JUPITERASCENDING']]
Я написал:
def read_file():
fileName = "testing.txt"
testFile = open(fileName)
table = []
for line in testFile:
contents = line.strip().split(':')
contents[0] = int(contents[0])
contents[1] = contents[1].replace(' ','')
table.append(contents)
print(table)
Мне почти удалось получить желаемый результат, но я не мог найти способ отделить строки от:
[[1,'PAPERTOWNS,TOMORROWLAND'],[2,'ENTOURAGE,JUPITERASCENDING']]
в
[[1,'PAPERTOWNS','TOMORROWLAND'],[2,'ENTOURAGE','JUPITERASCENDING']]
3 ответа
Вы можете разделить второй элемент через запятую.
демонстрация
def read_file():
fileName = "testing.txt"
testFile = open(fileName)
table = []
for line in testFile:
contents = line.strip().split(':')
table.append([int(contents[0])] + contents[1].split(","))
print(table)
Выход:
[[1, 'PAPER TOWNS', 'TOMORROWLAND'], [2, 'ENTOURAGE', 'JUPITER ASCENDING']]
Используя Regex:
import re
def read_file():
fileName = "testing.txt"
testFile = open(fileName)
table = []
for line in testFile:
contents = re.split("[,:]+", line.strip())
table.append(contents)
print(table)
Выход:
[['1', 'PAPER TOWNS', 'TOMORROWLAND'], ['2', 'ENTOURAGE', 'JUPITER ASCENDING']]
Это однострочник с пандами. Ваш файл похож на файл CSV, просто символ-разделитель может быть двоеточием или запятой, поэтому мы используем регулярное выражение:
import pandas as pd
df = pd.read_csv('file.txt', header=None, sep=r'[:,]')
Вы можете разбить строку на несколько разделителей:
import re
print([[int(re.split(':|,', line.strip())[0])]+re.split(':|,', line.strip())[1:] for line in open('text_file','r')])
выход:
[[1, 'PAPER TOWNS', 'TOMORROWLAND'], [2, 'ENTOURAGE', 'JUPITER ASCENDING']]