изменить и пропустить столбцы из текстового файла в python - PullRequest
0 голосов
/ 06 августа 2020

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

Здесь ввод

                            a|b|c|d|e|f
                            d|f|g|h|y|s   

Так, у меня 1000 строк

• 1007 *
                c|d|a|b
                g|h|d|f

Я пробовал, как показано ниже, и это не работает

      with open("old.txt","r") as file,open('new.txt', 'w') as outfile:
               freader = csv.reader(file, delimiter = '|')
                for line in file:
                line[3], line[4],line[1],line[2]
               outfile.write(line)

Любая помощь приветствуется.

Ответы [ 2 ]

1 голос
/ 06 августа 2020
import csv

with open('old.csv', 'r') as f_in, open('new.csv', 'w') as f_out:
    freader = csv.reader(f_in, delimiter = '|')
    fwriter = csv.writer(f_out, delimiter = '|')
    for line in freader:
        fwriter.writerow([line[2], line[3], line[0], line[1]])

Файл old.csv:

a|b|c|d|e|f
d|f|g|h|y|s

Файл new.csv:

c|d|a|b
g|h|d|f
0 голосов
/ 06 августа 2020

for line in file: хотя это допустимый синтаксис, вы должны использовать созданный вами cvsreader. Замените это на for line in freader:

line[3], line[4],line[1],line[2] Эта строка ничего не делает, вы должны сохранить ее в переменной. Замените это на newline = line[2] + "|" + line[3] + "|" + line[0] + "|" + line[1]. Это создает строку с | между каждым символом.

outfile.write(line) Вы пишете ту же строку, которую читаете. Замените это на outfile.write(newline + "\n"). Это запишет созданную нами строку в файл. Добавление \n добавит новую строку в конце каждой строки

with open("old.txt","r") as file,open('new.txt', 'w') as outfile:
    freader = csv.reader(file, delimiter = '|')
    for line in freader:
        newline = line[2] + "|" + line[3] + "|" + line[0] + "|" + line[1]
        outfile.write(newline + "\n")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...