请写Python代码,满足以下需求:1、 读取名字为文件1,将其按照分隔符“|”分开。将第2、9列取出,作为表A。 2、 读取名字为文件2,提取第2、8列,作为表B。 3、 以表A为主表,根据表A的第2列与表B的第1列做匹配,从而得到表B的第2列结果,并将结果补充到表A,作为表C。 4、 读取文件3,将其按照分隔符“|”分开。如果第2列结果显示为“未归属”,删除该行。将第1、2列取出,作为表D。 5、 以表C为主表,根据表C的第1列与表D的第1列做匹配,从而得到表D的第2列结果,并将其补充到表C,作为表E。 6、 将表E按照名字为“结果文件.txt”输出。 7、 输入数据组,包含了“布吉、宝龙、龙城”三个关键词。对于表E,如果其第4列出现该数据组的任意一关键词,则计数,以此统计每一行。同时将符合要求的行结果输出,名字为“结果文件(龙岗).txt”输出。
时间: 2024-03-12 18:43:54 浏览: 90
以下是Python代码的实现:
```
# 读取文件1,提取表A
with open('文件1.txt', 'r') as f1:
lines = f1.readlines()
table_a = []
for line in lines:
cols = line.strip().split('|')
table_a.append((cols[1], cols[8]))
# 读取文件2,提取表B
with open('文件2.txt', 'r') as f2:
lines = f2.readlines()
table_b = []
for line in lines:
cols = line.strip().split('|')
table_b.append((cols[1], cols[7]))
# 根据表A和表B,匹配生成表C
table_c = []
for row_a in table_a:
for row_b in table_b:
if row_a[0] == row_b[0]:
table_c.append((row_a[0], row_a[1], row_b[1]))
break
# 读取文件3,提取表D
with open('文件3.txt', 'r') as f3:
lines = f3.readlines()
table_d = []
for line in lines:
cols = line.strip().split('|')
if cols[1] != '未归属':
table_d.append((cols[0], cols[1]))
# 根据表C和表D,匹配生成表E
table_e = []
for row_c in table_c:
for row_d in table_d:
if row_c[0] == row_d[0]:
table_e.append((row_c[0], row_c[1], row_c[2], row_d[1]))
break
# 输出表E到文件
with open('结果文件.txt', 'w') as f4:
for row in table_e:
f4.write(row[0] + '|' + row[1] + '|' + row[2] + '|' + row[3] + '\n')
# 统计符合要求的行并输出到文件
keywords = ['布吉', '宝龙', '龙城']
count = 0
with open('结果文件(龙岗).txt', 'w') as f5:
for row in table_e:
if any(keyword in row[3] for keyword in keywords):
count += 1
f5.write(row[0] + '|' + row[1] + '|' + row[2] + '|' + row[3] + '\n')
f5.write('共计:' + str(count) + ' 行')
```
注意:这段代码是基于您所提供的需求,但是由于缺少具体的数据样本,因此无法保证代码的完全正确性。您需要根据自己的实际情况进行适当的调整和修改。同时,为了确保代码的正确性,建议在编写代码之前,先对数据样本进行简单的手动计算和分析,以确保代码实现的正确性。
阅读全文