我有以下格式的文件:
995957,16833579
995959,16777241
995960,16829368
995961,50431654
我想读取每一行,但将值拆分为适当的值。例如,第一行将分为:
x = 995957
y = 16833579
由于它是一个字符串,当你读入它并且我想将它们转换为int并拆分它们时,我究竟会怎么做呢?任何帮助将不胜感激。
谢谢!
答案 0 :(得分:16)
我会做类似的事情:
filename = "mynumbers.txt"
mynumbers = []
with open(filename) as f:
for line in f:
mynumbers.append([int(n) for n in line.strip().split(',')])
for pair in mynumbers:
try:
x,y = pair[0],pair[1]
# Do Something with x and y
except IndexError:
print "A line in the file doesn't have enough entries."
在http://docs.python.org/tutorial/inputoutput.html中建议使用open,因为它确保即使在处理过程中引发异常也能正确关闭文件。
答案 1 :(得分:15)
这样的东西 - 每行读入字符串变量a
:
>>> a = "123,456"
>>> b = a.split(",")
>>> b
['123', '456']
>>> c = [int(e) for e in b]
>>> c
[123, 456]
>>> x, y = c
>>> x
123
>>> y
456
现在,您可以按照指定的x
和y
执行必要的操作,这些是整数。
答案 2 :(得分:10)
将open(file, mode)
用于文件。
该模式是'r'用于读取的变体,'w'用于写入,并且可能'b'附加(例如,'rb')以打开二进制文件。请参阅以下链接。
将open
与readline()
或readlines()
一起使用。前者将一次返回一行,而后者返回行列表。
使用split(delimiter)
分隔逗号。
最后,您需要将每个项目转换为整数:int(foo)
。您可能希望使用try块后跟except ValueError
来围绕演员,如下面的链接所示。
您还可以使用“多次分配”一次分配a和b:
>>>a, b = map(int, "2342342,2234234".split(","))
>>>print a
2342342
>>>type(a)
<type 'int'>
答案 3 :(得分:3)
>>> [[int(i) for i in line.strip().split(',')] for line in open('input.txt').readlines()]
[[995957, 16833579], [995959, 16777241], [995960, 16829368], [995961, 50431654]]