我有这样一个输入文件:
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个字符组成,并且总是以数字开头,以字母结尾。你知道吗
如果因为拆分,段落被表示为一行的原因。你知道吗
我阅读文件并在其上循环查找每个段落的第三行,并使用换行符(\n)作为段落之间的限定符,因此每次找到换行符时都会重置索引。你知道吗
这样我就可以得到每一段的第三行。你知道吗
如果您的最终目标是使用逗号连接行,直到遇到右括号,那么您根本不需要正则表达式。例如,你可以这样做:
如果您真的想使用正则表达式从第三行提取文本,那么应该使用以下模式:
r'^\d{6}\s\w{8}(?=\n)$'
。例如:还要注意,以
input = open("input.txt", "r")
的形式打开文件是not a good practice。使用with
语句(例如with open("input.txt", "r") as input
)打开文件可以确保在处理完文件后正确关闭它。你知道吗相关问题 更多 >
编程相关推荐