首页 > 解决方案 > 如何解决“findall()缺少1个必需的位置参数:'string'”在python中读取文件的错误?

问题描述

我想使用关键字从两个 .txt 文件中提取特定行,并将找到的整个行写入另一个 output.txt 文件。这是我想要的文件的一个例子:

我的输入文件如下:

输入1.txt

A 中的孔限制直径:3.95 A 中的最大孔径:8.02 系统在 1 维(通道)中渗透

Input2.txt

A 中的孔限制直径:4.15 A 中的最大孔径:7.02 系统在一维(通道)中渗透

我的 output.txt 文件必须如下所示:

A 中的孔限制直径:3.95 ##### A 中的最大孔径:8.02(* 来自 input1.txt)

A 中的孔限制直径:4.15 ##### A 中的最大孔径:7.02(* from input2.txt)

我写了如下代码:

import re
filenames = [f"result{i}.txt" for i in range(1,3)]

with open ("output.txt", "w") as outputfiles:

for file in filenames:
    with open (file) as inputfile:
        content = inputfile.read()
        desired = re.findall('Pore limiting diameter in A.*|Maximum pore diameter in A.*')
for line in desired:
    outputfiles.writelines(line + ' ###### ')

我怎么解决这个问题?

非常感谢

标签: python-3.x

解决方案


Mohammad,您编写的代码存在一些问题。
1、re.findall 的格式如下re.findall('search Pattern', text to search)你的命令缺少要搜索的文本。因此将行更改为desired = re.findall('Pore limiting diameter in A.*|Maximum pore diameter in A.*', contents)
2。根据您的示例文本文件,搜索模式不正确,应将其更改为 ```'A 中的孔限制直径:|A 中的最大孔径: '` ` 3. for 循环输出数据需要在代码的文件读取元素下缩进。
4. 您未能在输出数据中包含数据来源。

以下是您的代码在进行这些更改后的外观:

import re
filenames = [f"result{i}.txt" for i in range(1,3)]

with open ("output.txt", "w") as outputfiles:

    for file in filenames:
        with open (file) as inputfile:
            content = inputfile.read()
            desired = re.findall('Pore limiting diameter in A:*|Maximum pore diameter in A:*', contents)
            for line in desired:
                outputfiles.writelines(f"{line[0]} ###### {line[1]}(* from {file})")

推荐阅读