Найти и заменить в текстовом файле с помощью Python
У меня есть текстовый файл длиной около 400 000 строк. Мне нужно импортировать этот текстовый файл в программу, которая принимает только текстовые файлы, которые ограничены пробелами или вкладками, но этот текстовый файл разделяется запятыми. В программе нет возможности экспортировать текстовый файл из (Arcmap), чтобы изменить разграничение, и поиск и замена в самом текстовом файле буквально займет 2 дня.
Я искал script, чтобы сделать это, но все они, кажется, заменяют всю LINE файла слова пробелом вместо индивидуальной замены каждой точки с запятой, оставляя мне пустой текстовый файл.
Вот пример моего текстового файла:
"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
Ответы
Ответ 1
Как насчет этого:
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()
Ответ 2
с Python, вы можете использовать fileinput.
import fileinput
for line in fileinput.FileInput("file",inplace=1):
line = line.replace(";"," ")
print line,
это заменит все ваши ";" к местам на месте.
Ответ 3
Python 3.2 добавил возможность использовать это в качестве менеджера контекста, так что файлы, которые по какой-либо причине не работают во время обработки, всегда будут закрыты:
import fileinput
def main():
with fileinput.input(inplace=True) as f:
for line in f:
line = line.replace(";", " ")
print(line, end='')
(вдохновение)
Используйте его, предоставив ему текстовый файл, который вы хотите обработать.