我需要帮助以REGEX格式匹配文件的每一行,如果不匹配,则基于REGEX格式重新格式化该行。
关于文件:每行唯一的变化是每行qr后的10位数字(1234567890)。
问题:现在我无法进行比赛。我的输出只是以正确的格式打印ELSE输出。
谢谢您的帮助!
import re
filepath = 'fruit.txt'
def main():
# mode function to check that the file is in open mode.
with open(filepath) as fp:
cnt = 1
for line in fp:
#Matching correct format: fruit_id (iid 43210, qr 1234567890,mo 001212121)
matchLn = re.match(r'fruit_id\s+\(iid\s+43210,\s+qr\s+1\d\{10},mo\s+001212121\)', line, re.M|re.I)
print("Matching Pattern with : {}".format(line))
#if pattern.match(line):
if matchLn:
print('Matched format:', cnt)
else:
print('Check the format of the line:', cnt)
# I need to make sure the line matches the format)
cnt = cnt + 1
main()
fruit.txt:
fruit_id (iid 43210, qr 1234567890,mo 001212121)
fruit_id (iid 43210, qr 1235567890,mo 001212121)
fruit_id (iid 43210, qr 1225367890,mo 001212121)
fruit_id (iid 43210, qr 1274567890,mo 001212121)
fruit_id (iid 43210, qr 1279567890,mo 001212121)
fruit_id (iid 43210, qr 1245637890,mo 001212121)
fruit_id (iid 43210, qr 1234457890,mo 001212121)
fruit_id (iid 43210, qr 1234532890,mo 001212121)
输出:
Matched format: 1
Matched format: 2
Matched format: 3
Matched format: 4
Matched format: 5
Matched format: 6
Matched format: 7
Matched format: 8
Copying the file to a path..
答案 0 :(得分:1)
您的正则表达式包含以下问题:
以下是解决这些问题的正则表达式示例:
\s*fruit_id\s+\(iid\s+43210,\s+qr\s+\d{10},mo\s+001212121\)
也在regular expressions 101中看到该正则表达式。