我正在从文本文件中读取一长串数字。
数字是:
12
42 45
78 30 98
12 45 12 30 ... and so on
我正在加载数字:
a = open('file', 'r')
lines = a.read()
当我输入行[0]时,我应该得到结果12,但我得到1。
当我检查我导入的数字类型时,我得到:
<type 'str'>
我已尝试通过以下方式更改号码类型:
lines = int(lines)
但是我收到了这个错误:
ValueError: invalid literal for int() with base 10:
为什么python导入字符串,当它们是数字?!如何更改此...或者是否需要以不同方式导入数据?
谢谢:)
答案 0 :(得分:3)
文件的内容是字符串,而不是数字,因此您需要包含翻译代码。
如果你的数字全部用空格分隔,你可以这样做:
a = open( 'file', 'r' )
for line in a:
numbers = [ int( x ) for x in line.split() ]
# Do something with numbers
最后一行分为以下部分:
line.split()#将一行划分为N个元素,每个元素用空格分隔
int(x)#将字符串表示形式转换为整数
[int(x)for x in line.split()]#创建一个元素列表,其中每个元素是行(x)的每个空格分隔部分的结果。
答案 1 :(得分:3)
尝试:
with open('file') as f:
array = []
for line in f:
array.append([int(x) for x in line.split()])
a.read()
接受文件大小的参数,只返回字符串类型
答案 2 :(得分:2)
尝试使用
a = open('file', 'r')
lines = a.readlines()
这样你就会得到一个数字列表。另一方面,你得到了
ValueError: invalid literal for int() with base 10:
因为你有换行符或回车符