gpt4 book ai didi

python - 解析文件中包含特定文本的行,然后确定下一步的逻辑

转载 作者:太空宇宙 更新时间:2023-11-04 05:43:51 25 4
gpt4 key购买 nike

我正在尝试扫描文本文件以查找特定关键字。当找到这个关键字时,我需要比较行上的一个数值,看它是否小于设定值。如果是,则需要打印/保存文件中的以下行,直到到达下一个关键字。我希望这是有道理的。

文本文件示例:

"saleAmount","500",text text textetc etc etctext text text"saleAmount","1200",text text textetc etc etctext text text

My python file is as follows:

import re
info = open("results.txt", "r")
for line in info:
if re.match("(.*)saleAmount(.*)", line):
for s in line:
result=re.findall('\d+', s)
if (result < 1000)
print (result)

在这种情况下,应将金额为 500 的行与 1000 进行比较并打印,以下两行也应如此。金额为 1200 的行及其后续行将被忽略。

我可以得到它来打印出一行结果中奇怪的一位数字的值,但是当我添加比较时我无法得到它。

我确信这很简单,但我是 python 的新手。谢谢

最佳答案

这是一种可能的解决方案:

import re

ls=[]

with open('results.txt') as f:
for line in f:
if "saleAmount" in line:
ls.append(line.strip('\n'))

for num in range(len(ls)):
for amnt in re.findall('\d+',ls[num]):
if int(amnt) < 1000:
print(amnt)

我所做的是将包含 saleAmount 的文件添加到列表 ls 中,然后从该列表中提取数字并进行比较以查看它们是否小于 1000 .

在您的情况下,result 正在获取值,无论它包含一个数字(将该数字拆分为单个数字)还是包含一个字符串(变为空列表)。

在您的原始代码中,在您定义它之后立即尝试 print(result),而不使用 if 语句及其下面的内容。然后你会更清楚地理解为什么你不能将它与 1000 进行比较

编辑:包括“saleAmount”和以下几行

import re

ls=[]

with open('data.csv') as f:
for line in f:
ls.append(line)

for w in ls:
if "saleAmount" in w and int(re.findall('\d+',w)[0]) < 1000:
print(w)
for i in range(1,4):
print(ls[ls.index(w)+i])

关于python - 解析文件中包含特定文本的行,然后确定下一步的逻辑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32936030/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com