Python:读取带负数的文件

时间:2017-03-18 10:45:22

标签: python list python-3.x

我试图读取.txt文件并将其附加到列表中的列表中,但我遇到了这个问题。

ValueError:基数为10的int()的文字无效:' - '

我的代码是这样的:

def readfiles(filename):
    with open(filename) as f:
        content = f.readlines()
    matrix=[]
    tem=[]
    for i in range(len(content)):
       tem=[]
       content[i] = content[i].replace('\n','')
       content[i] = content[i].replace(',', '')
       for j in range(len(content[i])):
           tem.append(int(content[i][j]))
       matrix.append(tem)

    return matrix

但如果我将 tem.append(int(content [i] [j]))替换为 tem.append(content [i] [j])

列表看起来有所不同,看起来像这样:

[['3',' - ','2','1'],['4',' - ','1','0'],['0','2',' 1' ]]

我希望我的函数从文件中读取负值。任何人都可以帮忙吗?

我的.txt文件如下所示:

3,-2,1
4,-1,0
0,2,1

2 个答案:

答案 0 :(得分:1)

如果你有一个像这样的字符串:

numbers = "-6, 3, -3, 18"

你总是可以这样做:

print [int(n) for n in numbers.split(',')]

获得:

[-6, 3, -3, 18]

也许您需要更改处理文件的方式,请添加一个extrat来向我们展示数字的位置。

答案 1 :(得分:1)

我猜这会奏效:

def readfiles(filename):
    with open(filename) as f:
        return [[int(num) for num in line.split(",")] for line in f]

你遇到的问题是你正在迭代你的行(这是一个字符串),它可以获得单独的字符,而不是“逗号之间的东西”:

假设当前行(content[i])为"3,-2,1"。 在此之后:

content[i] = content[i].replace(',', '')

content[i]现在是"3-21"。怎么知道你的号码是什么?迭代该字符串会为您提供"3", "-", "2", "1",其中"-"会导致抛出异常。