我试图读取.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
答案 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"
,其中"-"
会导致抛出异常。