我有一个以下格式的文件:
995957,16833579
995959,16777241
995960,16829368
995961,50431654
我想逐行读取文件,但是需要将每一行的值拆分为相应的值。例如,第一行将被分成:
x = 995957
y = 16833579
由于输入是一个字符串,而我想将它们转换为整数并进行拆分,那么我应该如何操作?非常感谢您的帮助。
谢谢!
假设有一个字符串变量 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
执行必要的操作。
map(int, a.split(","))
很酷。 - sayf eddine Hammemi我会这样处理:
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."
在处理过程中,即使出现异常情况,也可以确保文件被正确关闭,因此建议使用with open。有关详细信息,请参见http://docs.python.org/tutorial/inputoutput.html。
使用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'>
>>> [[int(i) for i in line.strip().split(',')] for line in open('input.txt').readlines()]
[[995957, 16833579], [995959, 16777241], [995960, 16829368], [995961, 50431654]]