Я относительно новичок в использовании python. Я пытаюсь взять стандартный формат файла и в конечном итоге разбить его на файлы меньшего размера на основе определенного идентификатора, который появляется в строке.
До сих пор я был в состоянии взять файл, открыть его для чтения инапишите, а затем разбейте каждую строку на элемент списка. Сейчас я пытаюсь найти позицию каждого элемента списка, которая начинается с «03». Все от одной позиции списка «03» до другой - это то, что в конечном итоге будет отдельным файлом. Я застрял в попытке извлечь позиции списка, где значение списка содержит «03». Я попытался использовать:
for value in acct_locate:
if value == '03':
locations.append(acct_locate.index(value))
Кажется, что ничего не возвращается, и я попробовал некоторые другие версии enumerate()
и index()
.
В настоящее время здесь мой код, который яя работаю с:
import re
#need to look for file name
filename = 'examplebai2.txt'
#this list will store all locations where three record shows up
acct_locate = []
locations = []
acct_listing = []
with open(filename, 'r+') as file:
line = [line.rstrip('\n') for line in file]
for x in line:
#locate all instances of locations starting with '03'
look = re.findall('^03', x)
acct_locate.append(look)
#add those instances to a new list
a = [i for i,x in enumerate(acct_locate) if x == '03']
for value in a:
print(value)
locations.append(acct_locate.index(value))
for y in line:
namelist = re.findall('^03, (.*),', y)
if len(namelist) > 0:
acct_listing.append(namelist)
Запуск приведенного выше кода ничего не вернет в список locations
, который я использую для сбора всех местоположений.
Вот скелет файлаЯ пытаюсь манипулировать.
01, Testfile
02, Grouptest
03, 11111111
16
88
49
03, 22222222,
16
88
49
03, 33333333,
16
88
49
03, 44444444,
16
88
49
98, Grouptestclose
99, Testfileclose
Из этого файла я хотел бы закончить четырьмя отдельными файлами, которые содержат от одной 03
записи до следующей 03
записи.