У меня есть файл, и мне нужно разделить его на более мелкие файлы по определенным номерам строк.

Я подготовил индексы - строки, где в строке Header есть:

listOfHeadersIndex = []

with open('Poland.csv', 'r') as csvfile:
    for i, line in enumerate(csvfile):
        if '[Header]' in line:
            print(i)
            listOfHeadersIndex.append(i)

А также:

listOFHeadersIndex is for example = 0,33,46,74.

Теперь мне нужно разделить это. Первый файл должен содержать 0-32 строки, второй 33-45 и т. Д. Я нашел только совет, как разбить на постоянные строки. Как по-простому я могу сделать это в Python?

0
martin 28 Июн 2019 в 13:29

3 ответа

Лучший ответ

Это то, что вы просите.

with open('Poland.csv', 'r') as csvfile:
    raw_data = csvfile.readlines()

file1=raw_data[0:33]
file2=raw_data[33:45]
1
WhySoSerious 28 Июн 2019 в 10:42

Вы можете напрямую разделить файл.

< Сильный > Пример:

newFile = False
c = 1
with open('Poland.csv', 'r') as csvfile:       #Open SRC file
    for line in csvfile:              #Iterate Each line
        if '[Header]' in line:        #Check for header
            if newFile:               #Check if file is open
                newFile.close()       #Close file.
            newFile = open("{}.txt".format(c), "w")   #Create new file for write. 
            newFile.write(line)                       #Write Header. 
            c += 1
        else:
            newFile.write(line)                       #Write Content. 
0
Rakesh 28 Июн 2019 в 11:39
listOfHeadersIndex = []
lines = []

with open('Poland.csv', 'r') as csvfile:
    for i, line in enumerate(csvfile):
        lines.append(line)
        if '[Header]' in line:
            print(i)
            listOfHeadersIndex.append(i)

for i,a in enumerate(listOfHeadersIndex):
    first_index = a
    last_index = listOfHeadersIndex[i+1]-1
    str_ = ''
    for j,line in enumerate(lines):
       if j >= first_index and j <= last_index:
           if str_:
              str_+= '\n'.join(line)
           else:
              str_+= line
    f = open(f"file{i}.txt", "w")
    f.write(str)
    f.close()
1
Mobasshir Bhuiyan 28 Июн 2019 в 10:55