Python从文件中搜索字符串值

时间:2014-02-27 02:51:56

标签: python search match

我正在尝试创建一个python脚本来查找txt文件中的特定字符串 例如,我有文本文件dbname.txt包括以下内容:

Level1="50,90,40,60"
Level2="20,10,30,80"

我需要脚本来搜索文件中的用户输入并打印等于该值的输出,如:

Please enter the quantity : 50
The level is : Level1

我被困在文件的搜索部分? 任何建议?

提前致谢

2 个答案:

答案 0 :(得分:1)

在这些有限的案例中,我建议使用正则表达式。

import re
import os

你需要一个文件来获取信息,为它创建一个目录,如果它不存在,然后写入文件:

os.mkdir = '/tmp' 
filepath = '/tmp/foo.txt'
with open(filepath, 'w') as file:
    file.write('Level1="50,90,40,60"\n'
               'Level2="20,10,30,80"')

然后阅读信息并解析它:

with open(filepath) as file:
    txt = file.read()

我们将使用带有两个捕获组的正则表达式,第一个用于Level,第二个用于数字:

mapping = re.findall(r'(Level\d+)="(.*)"', txt)

这将为我们提供元组对的列表。从语义上讲,我会考虑它们的关键和价值观。然后获取用户输入并搜索您的数据:

user_input = raw_input('Please enter the quantity: ')

我键入50,然后:

for key, value in mapping:
    if user_input in value:
        print('The level is {0}'.format(key))

打印:

The level is Level1

答案 1 :(得分:0)

使用mmap模块,这是最有效的方法。 mmap不会将整个文件读入内存(它按需分页)并支持find()和rfind()

with open("hello.txt", "r+b") as f:
    # memory-map the file, size 0 means whole file
    mm = mmap.mmap(f.fileno(), 0)
    position = mm.find('blah')