我有一个很长的信件档,其中包含一个人员身份证号码和几个符合条件的计划。 ID位于每个字母的开头和结尾。到目前为止,我已经能够实现下面的输出。
Current Output:
ID1
Plan1
Plan3
ID1
ID2
Plan2
Plan3
Plan4
ID2
ID3
etc....
#Current Code:
import re
#The input file path is where the file you would like manipulated is
Input = open(r"Original File Filepath", "r")
#The output file path is where you want the lines extracted to
Output = open(r"Destination Filepath", "w")
#Below just change the green areas to the text on the lines you would
like extracted
for line in Input:
if re.match("(.*)ID(.*)", line):
Output.writelines(line)
if re.match("(.*)Plan1(.*)", line):
Output.writelines(line)
if re.match("(.*)Plan2(.*)", line):
Output.writelines(line)
if re.match("(.*)Plan3(.*)", line):
Output.writelines(line)
if re.match("(.*)Plan4(.*)", line):
Output.writelines(line)
Output.close()
我正在尝试将第二个ID写入,并将结果转到csv中的特定列作为" X"基于计划的别名。
Desired Output:
ID,Plan1,Plan2,Plan3,Plan4
ID1,X,,X,
ID2,,X,X,X
编辑:字母列表如下所示 -
亲爱的史密斯女士1234
你被告知yada yada yada (文本块在这里)
ID 1234
您有资格享受以下计划
第一个
那个
亲爱的琼斯先生身份证598
你被告知yada yada yada (文本块在这里)
ID 598
您有资格享受以下计划
这一个
那个
或其他
答案 0 :(得分:1)
这里有一些尝试:
Output.write("ID,Plan1,Plan2,Plan3,Plan4")
current_id, current_plan = None, 0
for line in Input:
match = re.match("(.*)(ID.)(.*)", line)
if match:
current_plan = 0
if current_id == None:
current_id = match.group(2)
Output.write("\n" + current_id)
else:
current_id = None
for i in range(current_plan,5):
if re.match("(.*)Plan{}(.*)".format(i), line):
Output.write("," * (i - current_plan) + "X")
current_plan = i
break