【发布时间】:2021-11-01 04:27:53
【问题描述】:
我是 Python 新手。我在这里搜索了其他问题,但没有找到我遇到的确切情况。
我需要能够读取 File-A 的内容并从 File-B 中提取匹配的行。
我知道如何在 PowerShell 中执行此操作,但处理大文件时速度非常慢,我正在尝试学习 Python。
文件-A 仅包含贷款编号 - 每行 8 到 10 位数字 File-A 可以包含 1 到数千行
文件-B 可以包含 1 到数千行,其中包含更多数据,但每行将以相同的 8 到 10 位贷款编号开头。
我需要读取 File-A 并在 File-B 中找到匹配的行并将这些匹配的行写到一个新文件中(都是文本文件)
File-A 的示例内容 - 无空格 - 每行 1 次借出
272991
272992
272993
文件-B的示例内容
272991~20210129~\\Serv1\LOC7\675309\867530\016618\272991.pdf~0
272992~20210129~\\Serv1\LOC7\675309\867530\016618\272992.pdf~0
272993~20210129~\\Serv1\LOC7\675309\867530\016618\272993.pdf~0
是否有人能够提供帮助、为我指明正确的方向或更好地提供可行的解决方案?
这是我迄今为止尝试过的,但它所做的只是创建新的 PulledLoans.txt 文件,其中没有任何内容
import os
# os.system('cls')
os.chdir('C:\\Temp\\')
print(os.getcwd())
# read file
loanFile = 'Loans.txt'
SourceFile = 'Orig.txt'
NewFile = 'PulledLoans.txt'
with open(loanFile, 'r') as content, open(SourceFile, 'r') as source:
# print(content.readlines())
for loan in content:
# print(loan, end='')
if loan in source:
print('found loan')
with open(SourceFile) as dfile, open(loanFile) as ifile:
lines = "\n".join(set(dfile.read().splitlines()) & set(ifile.read().splitlines()))
print(lines)
with open(NewFile, 'w') as ofile:
ofile.write(lines)
【问题讨论】:
-
哪个是sourcefile,哪个是loanfile?您的代码在哪里查找一个文件中的哪一行与另一个文件中的一行相对应?
标签: python iteration matching string-matching