#python #python-2.7 #python-3.x
#python #python-2.7 #python-3.x
Вопрос:
Могу ли я узнать, как данные из файла можно разделить на два отдельных списка. Например, файл содержит данные в виде 1,2,3,4;5,6,7
my code:
for num in open('filename','r'):
list1 = num.strip(';').split()
Здесь я хочу новый список перед точкой с запятой (т.е.) [1,2,3,4] и новый список после точки с запятой (т.е.) [5,6,7]
Комментарии:
1.
list1 = num.split(';')[0].split(',')
list2 = num.split(';')[1].split(',')
2. Содержит ли файл более одной строки? Что должно произойти при разрыве строки?
Ответ №1:
Если вы уверены, что ваш файл содержит только 2 списка, вы можете использовать понимание списка:
l1, l2 = [sub.split(',') for sub in data.split(';')]
# l1 = ['1', '2', '3', '4']
# l2 = ['5', '6', '7']
В более общем плане,
lists = [sub.split(',') for sub in data.split(';')]
# lists[0] = ['1', '2', '3', '4']
# lists[1] = ['5', '6', '7']
Если требуются целые числа, вы можете использовать второе понимание списка:
lists = [[int(item) for item in sub.split(',')] for sub in data.split(';')]
Ответ №2:
Чтобы получить окончательный список, который вам ","
также нужно разделить (и, возможно map()
, результат int()
):
with open("filename") as f:
for line in f:
list1, list2 = [x.split(",") for x in line.rstrip().split(";")]
Ответ №3:
В зависимости от размера вашего файла, вы можете просто прочитать весь файл в строку сразу, а затем сначала разделить точкой с запятой, а затем запятой:
with open('filename', 'r') as f: #open file
s = f.read() #read entire contents into string
lists = s.split(';') #split separate lists by semicolon delimiters
for l in lists: #for each list
l = [int(x) for x in l.split(',')] #separate the string by commas and convert to integers