该程序读取大型文本文件目录。将搜索每个文件以查找特定字符串(具有正好两位小数的美元金额)。 我正在运行以下代码,其目的是确定特定金额是否在文本文件中:
d = {}
with open('numbers.txt') as f:
d = dict(x.rstrip().split(None, 1) for x in f)
import os
for filename in os.listdir(os.getcwd()):
string = d.get(filename, "!@#$%^&*")
if string in open(filename, 'r').read():
with open("outfile.txt", 'a') as out:
out.write("{} {} {}\n".format(filename, string, 1))
else:
with open("ibes_in.txt", 'a') as out:
out.write("{} {} {}\n".format(filename, string, 0))
numbers.txt包含文件名(.txt文件)列表和美元金额。美元金额字符串将位于文件名的文件中,或者不会。
在大多数情况下,此代码可以正常工作,除非它找到匹配数超过两位数的数字。例如,如果搜索字符串是1.42,我不希望它匹配1.423。
如果搜索字符串是1.42
示例输入:
"该公司报告了1.42美元......"
示例结果:true
示例输入:
"该公司的增长率为1.427 ......"
示例结果:false
美元符号的使用并不普遍,有时数字被包含在()中以表示否定。我相信正则表达式\ b是标记两位数字结尾的正确方法,但我不确定如何在我已有的代码中实现它。
答案 0 :(得分:0)
实际上,您可以使用正则表达式和\b
:
if re.search('\\b' + re.escape(string) + '\\b', open(filename, 'r').read()):