如何用Python从文本文件中获取整数?
在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