Python从文件中读取字符串并将其拆分为值

11

我有一个以下格式的文件:

995957,16833579
995959,16777241
995960,16829368
995961,50431654

我想逐行读取文件,但是需要将每一行的值拆分为相应的值。例如,第一行将被分成:

x = 995957
y = 16833579

由于输入是一个字符串,而我想将它们转换为整数并进行拆分,那么我应该如何操作?非常感谢您的帮助。

谢谢!


你目前尝试了哪些代码? - james.garriss
4个回答

19

假设有一个字符串变量 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

现在你可以对已分配的整数xy执行必要的操作。


1
map(int, a.split(",")) 很酷。 - sayf eddine Hammemi

18
我会这样做:

我会这样处理:

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


12

使用open(file, mode)来处理文件。其中,模式是' r '表示读取,' w '表示写入,可能会在后面添加' b '(例如' rb ')以打开二进制文件。详情请参阅下方链接。

使用openreadline()readlines()来读取文件。前者将逐行返回,而后者将返回一个包含所有行的列表。

使用split(delimiter)来按逗号分隔。

最后,您需要将每个项目转换为整数:int(foo)。您可能需要在try块中括住转换操作,然后是except ValueError,如下方链接所示。

您还可以使用“多重赋值”同时向a和b分配值:

>>>a, b = map(int, "2342342,2234234".split(","))  
>>>print a  
2342342
>>>type(a)  
<type 'int'>

Python IO文档

Python类型转换


3
>>> [[int(i) for i in line.strip().split(',')] for line in open('input.txt').readlines()]
[[995957, 16833579], [995959, 16777241], [995960, 16829368], [995961, 50431654]]

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接