Python中的正则表达式在匹配Lin中添加空间

2024-10-01 00:31:45 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个文本文件,其中一些行包含以下数据。 我想通过在开头添加更多的空间来替换与这些模式匹配的行(即,当前这些行有14个空间,我想将其设为34个)。你知道吗

我不能仅仅将14个空格替换为34,因为还有其他行也有14个空格,但下面的模式不匹配。你知道吗

          9
          1P
          PKC
          ABC1
          1BC1C
          ZBC12X
          A4C12XZ
          H4C12XZQ
          94C12XZQQ
          Q4C12XZQQT
          A4C12XZQQTY

我使用所有11个单独的代码来搜索这11个模式,如下所示:

[ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][0-9,A-Z]$
[ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][0-9,A-Z][0-9,A-Z]$
[ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][0-9,A-Z][0-9,A-Z][0-9,A-Z]$
[ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][0-9,A-Z][0-9,A-Z][0-9,A-Z][0-9,A-Z]$
[ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][0-9,A-Z][0-9,A-Z][0-9,A-Z][0-9,A-Z][0-9,A-Z]$
[ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][0-9,A-Z][0-9,A-Z][0-9,A-Z][0-9,A-Z][0-9,A-Z][0-9,A-Z]$
[ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][0-9,A-Z][0-9,A-Z][0-9,A-Z][0-9,A-Z][0-9,A-Z][0-9,A-Z][0-9,A-Z]$
[ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][0-9,A-Z][0-9,A-Z][0-9,A-Z][0-9,A-Z][0-9,A-Z][0-9,A-Z][0-9,A-Z][0-9,A-Z]$
[ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][0-9,A-Z][0-9,A-Z][0-9,A-Z][0-9,A-Z][0-9,A-Z][0-9,A-Z][0-9,A-Z][0-9,A-Z][0-9,A-Z]$

下面是我正在使用的Python代码。你知道吗

import re

input_file = open("1.txt", "r")

for line in input_file:
    if re.match('[ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][0-9,A-Z][0-9,A-Z][0-9,A-Z][0-9,A-Z][0-9,A-Z][0-9,A-Z][0-9,A-Z]$', line):
        print (line)

我需要的指导,我如何可以取代文本现在得到下面的输出。我可以用回复Sub但是我怎样才能只添加空格而不替换原始行中的其他字符,这些字符应该只用于匹配模式。你知道吗

输出:

                              9
                              1P
                              PKC
                              ABC1
                              1BC1C
                              ZBC12X
                              A4C12XZ
                              H4C12XZQ
                              94C12XZQQ
                              Q4C12XZQQT
                              A4C12XZQQTY

Tags: 代码reinputline模式空间file空格
2条回答

我建议使用以下正则表达式:https://regex101.com/r/6crgHK/1

那么,你的替代模式是:

import re

input_file = open("1.txt", "r")

pattern = re.compile(r'\s+([\dA-Z]+)$')

for line in input_file:
    if re.match(pattern, line):
        line = re.sub(pattern, r'34spaces\1', line)
        print(line)

当然,您需要用实际的34个空格替换34spaces部分。:)

> import re
> 
> input_file = open("1.txt", "r") space = ' ' * 14 for line in input file:
>     if re.match('[ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][0-9,A-Z][0-9,A-Z][0-9,A-Z][0-9,A-Z][0-9,A-Z][0-9,A-Z][0-9,A-Z]$',line):
>         print (space + line)

这可能有用!我只是在与您的查询匹配的任何行前面加上14个空格,然后将空格和您的行连接起来,打印14个空格,后跟您的行。你知道吗

相关问题 更多 >