在整个文本文件 python 中将 space 替换为制表符
Replace space with tab in entire text file python
我有一个包含连续空格的文本文件,我需要用制表符替换它们
这是文件的一部分:
这是我需要的样子:
我需要使用 python 代码或任何简单快捷的方法来完成它 ^_^
如果你使用unix操作系统你可以使用sed:
sed -r 's/[[:space:]]+/\t/g' input > output.txt
根据您的要求,这里有一个 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
甚至一些库。
假设,原始文件名为demo.txt,内容如下所示。
$ cat "demo.txt"
id name work address
1 sam google USA
2 raman facebook Europe
读取文件并将所有行存储在列表中。
找到最长的单词以保持所有列之间的偶数 space。
“ljust”用于证明单词的合理性(以保持值之间的偶数 spaces)
下面是代码片段。
>>> 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
我有一个包含连续空格的文本文件,我需要用制表符替换它们
这是文件的一部分:
这是我需要的样子:
我需要使用 python 代码或任何简单快捷的方法来完成它 ^_^
如果你使用unix操作系统你可以使用sed:
sed -r 's/[[:space:]]+/\t/g' input > output.txt
根据您的要求,这里有一个 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
甚至一些库。
假设,原始文件名为demo.txt,内容如下所示。
$ cat "demo.txt"
id name work address
1 sam google USA
2 raman facebook Europe
读取文件并将所有行存储在列表中。 找到最长的单词以保持所有列之间的偶数 space。 “ljust”用于证明单词的合理性(以保持值之间的偶数 spaces)
下面是代码片段。
>>> 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