如何使python在文件中查找范围?
我试图让python打开一个文件,并返回POINTBALANCE=在给定范围内的所有行如何使python在文件中查找范围?,python,Python,我试图让python打开一个文件,并返回POINTBALANCE=在给定范围内的所有行 num = input("Points to check: ") num2 = num + str(100) with open("glist.txt") as search: for line in search: if "POINTS BALANCE = " + num <= num <= num2 in line: print(line)
num = input("Points to check: ")
num2 = num + str(100)
with open("glist.txt") as search:
for line in search:
if "POINTS BALANCE = " + num <= num <= num2 in line:
print(line)
我希望它是这样的,如果我在num中输入100,python会自动检查POINTSBALANCE(从100到200),然后当我在num中输入200时,我希望它检查200到300,如果POINTSBALANCE=存在,您可能需要尝试使用正则表达式从行中提取数字。如果没有示例数据,这有点像猜测游戏和假设,但出于灵感:
import re
num = int(input("Points to check: "))
delta = 100
pattern = 'POINTSBALANCE = (\d+)'
with open("glist.txt") as search:
for line in search:
regex = re.search(pattern, line)
if regex and num <= int(regex.group(1)) <= num + delta:
print(line)
正如在一些注释中已经指出的,您应该将整数字符串转换为int,以将它们与数字进行比较 Python的字符串提供了足够方便的函数来完成这里的任务,即 str.startswithsubstring-自我解释 str.split-创建子字符串列表,默认情况下在空格处拆分 str.strip-删除开头和结尾不需要的字符 所以你的代码可以改成
num = int(input("Points to check: "))
num2 = num + 100
with open("glist.txt") as search:
for line in search:
if line.startswith("POINTS BALANCE = "):
x = int(line.split('=')[-1].strip())
if (num <= x) and (x <= num2):
print(line)
看起来,POINTS BALANCE=+num首先,您尝试使用数字之类的字符串。str100不是一个数字,而是一个文本,如果您尝试添加str100+str100,您将得到100100而不是200。其次,要理解您想从示例中得到什么有点困难,所以请展示一个具有预期输出的输入示例。第三,如果你想要一个答案,从你的glist.txt发布一些例子行。否则,人们将无法真正帮助您。当然,您可以在这个问题上与re合作,但您是否认为这是显然不完全了解数据类型概念的人在学习曲线上有意义的下一步。。。?更不用说你的回答中甚至没有解释你的模式。我认为我们不需要决定Popsmome的学习曲线。是的,他显然应该研究数据类型的概念,但我认为这在对他的问题的评论中已经很明显了。我的回答仅仅是指为他指明了下一步可能研究的方向,因此是“灵感”。