填充选项卡直到列的最大长度

时间:2014-03-23 07:34:16

标签: python notepad++

我有一个制表符分隔的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'}

但似乎我需要更多逻辑来实现它。

2 个答案:

答案 0 :(得分:0)

如果我理解正确,你只能使用以下内容在Notepad ++中实现:

enter image description here

是的,如果您有几个要执行此操作的文件,可以将其记录为宏并将其绑定到键作为快捷方式

答案 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)