Найти и заменить в текстовом файле, используя Python - PullRequest
18 голосов
/ 20 января 2011

У меня есть текстовый файл длиной около 400 000 строк.Мне нужно импортировать этот текстовый файл в программу, которая принимает только текстовые файлы, разделенные пробелами или символами табуляции, но этот текстовый файл разделен точками с запятой.В программе, из которой я экспортирую текстовый файл (Arcmap), нет возможности изменить удаление, а выполнение поиска и замены в самом текстовом файле буквально займет 2 дня.

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

Вот пример моего текстового файла:

"OID_";"POINTID";"GRID_CODE";"POINT_X";"POINT_Y"
;1;-56.000000;200900.250122;514999.750122
;2;-56.000000;200900.750122;514999.750122
;3;-56.000000;200901.250122;514999.750122
;4;-57.000000;200901.750122;514999.750122
;5;-57.000000;200902.250122;514999.750122
;6;-57.000000;200902.750122;514999.750122
;7;-57.000000;200903.250122;514999.750122
;8;-57.000000;200903.750122;514999.750122
;9;-57.000000;200904.250122;514999.750122
;10;-57.000000;200904.750122;514999.750122

Мне нужно, чтобы это выглядело примерно так:

1 -56.000000 200900.250122 514999.750122
2 -56.000000 200900.750122 514999.750122

Ответы [ 3 ]

32 голосов
/ 20 января 2011

Как насчет этого:

sed -i 's/;/ /g' yourBigFile.txt

Это не решение Python. Вы должны начать это в оболочке. Но если вы используете Блокнот, я думаю, что вы находитесь на Windows. Итак, вот решение Python:

f1 = open('yourBigFile.txt', 'r')
f2 = open('yourBigFile.txt.tmp', 'w')
for line in f1:
    f2.write(line.replace(';', ' '))
f1.close()
f2.close()
20 голосов
/ 20 января 2011

с Python, вы можете использовать fileinput .

import fileinput
for line in fileinput.FileInput("file",inplace=1):
    line = line.replace(";"," ")
    print line,

это заменит все ваши ";" на места на месте.

4 голосов
/ 06 января 2013

В Python 3.2 добавлена ​​возможность использовать его в качестве диспетчера контекста, так что файлы, которые по какой-либо причине перестали работать во время обработки, всегда будут закрыты:

import fileinput
def main():
    with fileinput.input(inplace=True) as f:
        for line in f:
            line = line.replace(";", " ")
            print(line, end='')

( вдохновение )

Используйте его, предоставив текстовый файл, который вы хотите обработать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...