Заменить пробел табуляцией во всем текстовом файле python - PullRequest
0 голосов
/ 20 июня 2020

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

это часть файла:

enter image description here

this how I need it to be like:

введите описание изображения здесь

Мне нужно сделать это, используя код python или любое простое и быстрое место ^ _ ^

Ответы [ 3 ]

0 голосов
/ 20 июня 2020

Вот решение с python, как вы просили:

filepath_in = 'path/to/my/filein.txt'
filepath_out = 'path/to/my/fileout.txt'
with open(filepath_in, 'r') as file_in, open(file_path_out, 'w') as file_out:
    for line in file_in:
        data = line.split()  # splits the content removing spaces and final newline
        line_w_tabs = "\t".join(data) + '\n'
        file_out.write(line_w_tabs)

Обратите внимание, что если содержимое cell данных длинное по сравнению с другими в том же column, одна вкладка может быть недостаточно, и ваш table может быть плохо выровнен.

Если макет важен, вам понадобятся некоторые манипуляции, вы можете подумать об использовании python format или даже некоторой библиотеки.

0 голосов
/ 20 июня 2020

Допустим, исходный файл называется demo.txt , а его содержимое выглядит ниже.

$ cat "demo.txt"

id name  work address
1 sam google USA
2 raman facebook Europe

Прочтите файл и сохраните все строки в списке. Найдите самое длинное слово, чтобы между всеми столбцами оставалось ровное пространство. "ljust" используется для выравнивания слов (для сохранения четных пробелов между значениями)

Ниже приведен фрагмент кода.

>>> file = "demo.txt"
>>> f = open(file, "r")
>>> data = f.readlines()
>>> col_width = max(len(word) for row in data for word in row.split()) + 2  # padding
>>> for row in data:
...     print "".join(word.ljust(col_width) for word in row.split())
...

id         name       work         address
1          sam        google       USA
2          raman      facebook     Europe
0 голосов
/ 20 июня 2020

Если вы используете операционную систему unix, вы можете использовать sed:

sed -r 's/[[:space:]]+/\t/g' input > output.txt
...