Python 如何将某些行文本、变量位置移动到特定列

Python 如何将某些行文本、变量位置移动到特定列,python,search,notepad++,text-formatting,Python,Search,Notepad++,Text Formatting,我有一个包含数百行的文本文件,我想将每行的特定结束块(可变的开始长度,“AS”之后的所有内容)移动到特定的列位置 这是我需要经常做的任务。我现在在记事本++中使用find-n-replace操作进行这种特殊的格式化,但最后的步骤是繁琐的手动选项卡排列 原始模式如下(这是在通过find-n-replace操作进行一些初始格式化操作之后): red.id作为red_标识符 红色。c为红色。\u颜色 mbr.red\u mbr作为red\u成员 stat.red\u stat为red\u status

我有一个包含数百行的文本文件,我想将每行的特定结束块(可变的开始长度,“AS”之后的所有内容)移动到特定的列位置

这是我需要经常做的任务。我现在在记事本++中使用find-n-replace操作进行这种特殊的格式化,但最后的步骤是繁琐的手动选项卡排列

原始模式如下(这是在通过find-n-replace操作进行一些初始格式化操作之后):

red.id作为red_标识符
红色。c为红色。\u颜色
mbr.red\u mbr作为red\u成员
stat.red\u stat为red\u status

我希望格式如下,所有“AS…”部分从第x列开始:

red.id作为red_标识符
红色。c为红色。\u颜色
mbr.red\u mbr作为red\u成员
stat.red\u stat为red\u status


任何帮助都将不胜感激!这可以在Notepadd++中处理吗?Python(我所知道的唯一语言)脚本是否可取

您可以使用4个单独的基于正则表达式的查找/替换:
替换根据实现所需的
列x
对齐所需的前导空格的数量而有所不同

要匹配的正则表达式:

更换后:

因此,每个组的regex和replace是:

查找内容:
(?:(作为红色[i].+)
//捕获作为红色标识符的
文本
替换为:(7个前导空格)$1//$1替换为捕获的文本

查找内容:
(?:(红色).+)
//将
捕获为红色
文本
替换为:(8个前导空格)$1

查找内容:
(?:(作为red_u[m].+)
//作为red_u成员捕获
文本
替换为:(2个前导空格)$1

这3个替换项将与最后一行的
AS
对齐,并将
作为红色(状态
)。当然,您可以调整间距,但示例中最后一行的正则表达式是:

查找内容:
(?:(红色).+)
//将
捕获为红色状态
文本
替换为:(n个前导空格)$1/
n
这里是您可能需要的任意数量的空格

如果将间距添加到第4行,则需要将此处使用的间距量添加到前3行,以保持所需的
列x
对齐

例如,如果您希望在最后一行中的AS前面多留4个空格,则:

  • 在1美元之前,一线比赛需要11个前导空格
  • 在1美元之前,第二线比赛需要12个前导空格
  • 在1美元之前,第三线比赛需要6个前导空格

。。。使
列x
与AS对齐

您可以使用4个单独的基于正则表达式的查找/替换:
替换根据实现所需的
列x
对齐所需的前导空格的数量而有所不同

要匹配的正则表达式:

更换后:

因此,每个组的regex和replace是:

查找内容:
(?:(作为红色[i].+)
//捕获作为红色标识符的
文本
替换为:(7个前导空格)$1//$1替换为捕获的文本

查找内容:
(?:(红色).+)
//将
捕获为红色
文本
替换为:(8个前导空格)$1

查找内容:
(?:(作为red_u[m].+)
//作为red_u成员捕获
文本
替换为:(2个前导空格)$1

这3个替换项将与最后一行的
AS
对齐,并将
作为红色(状态
)。当然,您可以调整间距,但示例中最后一行的正则表达式是:

查找内容:
(?:(红色).+)
//将
捕获为红色状态
文本
替换为:(n个前导空格)$1/
n
这里是您可能需要的任意数量的空格

如果将间距添加到第4行,则需要将此处使用的间距量添加到前3行,以保持所需的
列x
对齐

例如,如果您希望在最后一行中的AS前面多留4个空格,则:

  • 在1美元之前,一线比赛需要11个前导空格
  • 在1美元之前,第二线比赛需要12个前导空格
  • 在1美元之前,第三线比赛需要6个前导空格

。。。使
列x
与AS对齐

您可以在两个步骤中完成此操作:

  • 将选项卡宽度修改为特定宽度,在这里,我使用25
    • Ctrl+H
    • 查找内容:
      \h+(?=AS\b)
    • 替换为:
      \t
    • 检查环绕
    • 检查正则表达式
    • 全部替换
  • 说明:

    \h+         # 1 or more horizontal spaces
    (?=         # start lookahead, zro-length assertion to make sure we have after:
      AS        # literally AS
      \b        # word boundary to make sure we don't match AS... (i.e. Asterisk)
    )           # end lookahead
    
    red.id                   AS red_identifier
    red.c                    AS red_color
    mbr.red_mbr              AS red_member
    stat.red_stat            AS red_status 
    
    给定示例的结果:

    \h+         # 1 or more horizontal spaces
    (?=         # start lookahead, zro-length assertion to make sure we have after:
      AS        # literally AS
      \b        # word boundary to make sure we don't match AS... (i.e. Asterisk)
    )           # end lookahead
    
    red.id                   AS red_identifier
    red.c                    AS red_color
    mbr.red_mbr              AS red_member
    stat.red_stat            AS red_status 
    
    结果:

    \h+         # 1 or more horizontal spaces
    (?=         # start lookahead, zro-length assertion to make sure we have after:
      AS        # literally AS
      \b        # word boundary to make sure we don't match AS... (i.e. Asterisk)
    )           # end lookahead
    
    red.id                   AS red_identifier
    red.c                    AS red_color
    mbr.red_mbr              AS red_member
    stat.red_stat            AS red_status 
    

    您可以在两个步骤中完成此操作:

  • 将选项卡宽度修改为特定宽度,在这里,我使用25
    • Ctrl+H
    • 查找内容:
      \h+(?=AS\b)
    • 替换为:
      \t
    • 检查环绕
    • 检查正则表达式
    • 全部替换
  • 说明:

    \h+         # 1 or more horizontal spaces
    (?=         # start lookahead, zro-length assertion to make sure we have after:
      AS        # literally AS
      \b        # word boundary to make sure we don't match AS... (i.e. Asterisk)
    )           # end lookahead
    
    red.id                   AS red_identifier
    red.c                    AS red_color
    mbr.red_mbr              AS red_member
    stat.red_stat            AS red_status 
    
    给定示例的结果:

    \h+         # 1 or more horizontal spaces
    (?=         # start lookahead, zro-length assertion to make sure we have after:
      AS        # literally AS
      \b        # word boundary to make sure we don't match AS... (i.e. Asterisk)
    )           # end lookahead
    
    red.id                   AS red_identifier
    red.c                    AS red_color
    mbr.red_mbr              AS red_member
    stat.red_stat            AS red_status 
    
    结果:

    \h+         # 1 or more horizontal spaces
    (?=         # start lookahead, zro-length assertion to make sure we have after:
      AS        # literally AS
      \b        # word boundary to make sure we don't match AS... (i.e. Asterisk)
    )           # end lookahead
    
    red.id                   AS red_identifier
    red.c                    AS red_color
    mbr.red_mbr              AS red_member
    stat.red_stat            AS red_status