如何从tex中提取字符串(010000 aaaaaa)

2024-10-05 10:49:09 发布

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

我有这样一个输入文件:

JTS
FF
010000 AAAAAAAA
text-text1.1
-text1.2-)

JTS
FF
020000 AAAAAAAA
text-text text
text-text2
-text2)

使用这个代码:

import re
input = open("input.txt", "r")

for line in input.read().split(")"):

 mySubString=line[line.find("JTS"):line.find("JTS")+3]
 mySubString2=line[line.find("FF"):line.find("FF")+2]

 print(mySubString,end=",")
 print(mySubString2,end=",")

result = re.findall(r'-\s*(.*?)(?=\s*-)', line)
 print(",".join(result)+"\n")

我得到这个输出:

JTS,FF,,text1.1,text1.2

JTS,FF,,text2

因此,我的目标是找到一种方法,从每个段落中提取第三行中的字符串,以便像这样打印输出:

JTS,FF,010000 AAAAAAAA,text1.1,text1.2

JTS,FF,020000 AAAAAAAA,text2

请注意,这个字符串总是出现在每个段落的第3行,它总是由15个字符组成,并且总是以数字开头,以字母结尾。你知道吗


Tags: textreinputlineresultfindend段落
2条回答

如果因为拆分,段落被表示为一行的原因。你知道吗

我阅读文件并在其上循环查找每个段落的第三行,并使用换行符(\n)作为段落之间的限定符,因此每次找到换行符时都会重置索引。你知道吗

这样我就可以得到每一段的第三行。你知道吗

file = open("input.txt", "r")

third_lines = []
index = 0

for line in file:
    if index == 2:
        # rstrip() is to get rid of the linebreak
        third_lines.append(line.rstrip())
    index += 1
    if line == "\n":
        index = 0

print(third_lines)

# Output
# ['010000 AAAAAAAA', '020000 AAAAAAAA']

如果您的最终目标是使用逗号连接行,直到遇到右括号,那么您根本不需要正则表达式。例如,你可以这样做:

with open("input.txt", "r") as input:
    result = ''
    for line in input.readlines():
        line = line.strip()
        if len(line) > 0:
            if not line.endswith(')'):
                result += '{}{}'.format(line, ',')
            else:
                result += line.rstrip(')')
                print(result)
        else:
            result = ''

# Output:
# JTS,FF,010000 AAAAAAAA,text-text1.1,-text1.2-
# JTS,FF,020000 AAAAAAAA,text-text text,text-text2,-text2

如果您真的想使用正则表达式从第三行提取文本,那么应该使用以下模式:r'^\d{6}\s\w{8}(?=\n)$'。例如:

import re

third_lines = []
with open("input.txt", "r") as input:
    for line in input.readlines():
        match = re.match(r'^\d{6}\s\w{8}(?=\n)$', line)
        if match:
            third_lines.append(match.group())

print(third_lines)

# Output:
# ['010000 AAAAAAAA', '020000 AAAAAAAA']

还要注意,以input = open("input.txt", "r")的形式打开文件是not a good practice。使用with语句(例如with open("input.txt", "r") as input)打开文件可以确保在处理完文件后正确关闭它。你知道吗

相关问题 更多 >

    热门问题