【发布时间】:2019-11-14 10:00:16
【问题描述】:
我有以下输入文件:
输入文件:https://drive.google.com/open?id=1BkRRUKn_AvtRmV4L1pQlNLIPL7pVRAoY
我正在尝试在文本文件中添加空格,匹配以下 2 种情况,并保持其余未匹配行不变。
- 案例 1: 从关键字Product开始的任何行。
- 案例 2: 任何以“14 Spaces”开头的行,后跟“任何 4 个字符”和“行尾”
这样对于新文件或新修改的输入文件,输出将如下所示。
输出文件:https://drive.google.com/open?id=1BkXjlrMG39yusKQ5dw8gYCGYo25xCrXF
我尝试了什么?
import re
import fileinput
pattern1 = re.compile('[ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ]+([0-9,A-Z][0-9,A-Z][0-9,A-Z][0-9,A-Z]+)$')
pattern2 = re.compile('PRODUCT:+/^[A-Z]{0,10}$/')
for line in fileinput.input('Input_File_S.txt', inplace = True, backup='.bak'):
if re.search(pattern1,line):
line = re.sub(pattern1, ' \1', line)
elif re.search(pattern2,line):
line = re.sub(pattern2, ' \1', line)
但这只是从我的文件中删除所有内容。对我做错的任何帮助或任何更正将不胜感激。
【问题讨论】:
-
'PRODUCT:+/^[A-Z]{0,10}$/'是一个从不匹配任何字符串的损坏正则表达式模式的示例。在两个消费模式之间,字符串位置的开始总是错误的。不要将正则表达式文字符号与字符串模式混合,Python 不支持前者。