提问人:Samyak Bhattarai 提问时间:12/3/2022 最后编辑:TimusSamyak Bhattarai 更新时间:12/6/2022 访问量:86
如何从 txt 文件中提取数字
How to extract number from a txt file
问:
首先是我的文件
amtdec = open("amt.txt", "r+")
gc = open("gamecurrency.txt", "r+")
eg = gc.readline()
u = amtdec.readline()
主代码
user_balance = int(u)
egc = int(eg)
while True:
deposit_amount = int(input("Enter deposit amount: $"))
if deposit_amount<=user_balance:
entamount = deposit_amount * EXCHANGE_RATE
newgc = entamount + egc
newamt = user_balance - deposit_amount
这就是我的错误:
user_balance = int(u)
ValueError: invalid literal for int() with base 10: ''
我试图将文件中的 int 与我的输入进行比较。
答:
-1赞
John B.
12/3/2022
#1
通常,像这样的错误应该会让您检查文件的格式。正如其他一些人所提到的,无论出于何种原因,第一行都可能是空的。在此之前,您可以通过执行以下操作来检查空文件:
测试.txt内容: (空文件)
import os
f = open("test.txt")
if os.path.getsize("test.txt") == 0:
print("Empty File")
f.close()
else:
print("Some content exists")
输出:“空文件”(文件也被关闭,因为没有什么可读取的)
或者,如果您以某种方式无法访问其内容,您可以阅读整个文件(有些学校会这样做)。使用此技术可以让您了解在 IDE 中无法查看文件时正在处理的内容:
f = open("test.txt")
for line in f:
print(line)
f.close()
但是,假设只有文件的第一行是空的。有几种方法可以检查一行是否为空。如果第 1 行为空,但其后的任何行都有内容,则从文件中读取第 1 行将等于“\n”:
测试.txt内容: 第 1 行 = '\n'(空行),第 2 行 = 20.72
import os
f = open("test.txt")
if os.path.getsize("test.txt") == 0:
print("Empty File")
f.close()
else:
print("Some content exists")
reader = f.readline()
# The second condition is if you are using binary mode
if reader == '\n' or reader == b"\r\n":
print("Blank Line")
输出:“某些内容存在”和“空白行”
这只是我的建议。至于您的整数转换,如果您的货币金额中有“.”,您将因尝试将其数据转换为整数而出现转换错误。但是,我不知道您的货币是否会四舍五入到最接近的美元,或者您是否有任何变化的迹象,所以我将把这个留给您。
评论
amtdec
u
ValueError
\n
readlines()