如何用Python从文本文件中获取整数?

1 投票
2 回答
4056 浏览
提问于 2025-04-17 07:11

在Python中,我想从一个文本文件中读取信息并把它存到一个变量里。我能成功地把它设置好,但它并不能像数字那样工作。是不是存储成了其他类型?

11 14 15 3

这是我的脚本:

def break_words(text):
    words = text.split(' ')
    return words

file_name = open("set_initial.txt")
words = break_words(file_name.read())

shift_l1 = words[0]
shift_l2 = words[1]
shift_l3 = words[2]
shift_l4 = words[3]
shift_l5 = words[4]
shift_l6 = words[5]

# this part is to verify that the variables are being set:
print shift_l1, shift_l2, shift_l3, shift_l4

while shift_l4 < 28:
# and the script goes on into a loop from here

我使用这个方法是因为文本文件中的值长度会变化(比如变成:114 34 2 4318)。当我运行脚本时,打印函数正常工作,能把我在文本文件中的变量(11 14 15 3)打印出来,所以shift_l4打印的结果是3,我的WHILE循环应该是正常运行的。但实际上并不是。正如我所说,我觉得我的变量没有被设置成文本文件中数字的数值,而只是文本值?我不知道该怎么解决这个问题。有没有什么帮助或建议?

谢谢

2 个回答

2

我觉得问题在于你在比较的时候用了两种不同的数据类型,一个是字符串,另一个是整数。如果你想进行数字比较,可能需要把你的shift_l4明确地转换成整数,也就是用int(shift_l4)来做。

1

"file_name" 这个名字不太适合用来命名文件对象。而 "words" 这个名字也不太适合用来表示一组用字符串表示的数字。像 "shift_l5 = words[4]" 和 "shift_l6 = words[5]" 这样的代码会出错,因为你只有 4 个数字。

注意,print "3"print 3 的输出是一样的。为了更好地理解你手头的数据,建议使用 print repr(something),而不是直接用 print something

试试这个:

f = open("set_initial.txt")
numbers = [int(n) for n in f.read().split()]
print numbers
assert len(numbers) == 4
shift_l1, shift_l2, shift_l3, shift_l4 = numbers
print shift_l1, shift_l2, shift_l3, shift_l4

撰写回答