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

时间:2012-03-25 03:32:41

标签: python file split

我有以下格式的文件:

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

我想读取每一行,但将值拆分为适当的值。例如,第一行将分为:

x = 995957
y = 16833579

由于它是一个字符串,当你读入它并且我想将它们转换为int并拆分它们时,我究竟会怎么做呢?任何帮助将不胜感激。

谢谢!

4 个答案:

答案 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

现在,您可以按照指定的xy执行必要的操作,这些是整数。

答案 2 :(得分:10)

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 docs

python casting

答案 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]]