我有一个制表符分隔的txt,看起来像
11 22 33 44
53 25 36 25
74 89 24 35 and
但是没有"标签"在44和25之后。因此第1和第2行有4列,第3行有5列。
要重写它以便显示标签
11\t22\t33\t44
53\t25\t36\t25
74\t89\t24\t35\tand
我需要一个工具来批量添加没有条目的标签。
如果列的最大长度为n(在上例中n = 5),那么我想填充制表符,直到所有行的第n列为止
11\t22\t33\t44\t
53\t25\t36\t25\t
74\t89\t24\t35\tand
我尝试使用notepad ++和python,使用像
这样的替换代码 map_dict = {'':'\t'}
但似乎我需要更多逻辑来实现它。
答案 0 :(得分:0)
如果我理解正确,你只能使用以下内容在Notepad ++中实现:
是的,如果您有几个要执行此操作的文件,可以将其记录为宏并将其绑定到键作为快捷方式
答案 1 :(得分:0)
我假设你的文件也包含换行符,所以实际上看起来像这样:
11\t22\t33\t44\n
53\t25\t36\t25\n
74\t89\t24\t35\tand\n
如果您确定列的最大长度为5,则可以这样做:
with open('my_file.txt') as my_file:
y = lambda x: len(x.strip().split('\t'))
a = [line if y(line) == 5 else '%s%s\n' % (line.strip(), '\t'*(5 - y(line)))
for line in my_file.readlines()]
# ['11\t22\t33\t44\t\n', '53\t25\t36\t25\t\n', '74\t89\t24\t35\tand\n']
这将添加结束标签,直到您达到5列。您将获得一个需要写回文件的行列表(我有' my_file2.txt'但如果您愿意,可以回写原始行。)
with open('my_file2.txt', 'w+') as out_file:
for line in a:
out_file.write(line)