我生气了,我得到了一个错误。从互联网上读取文件到目前为止,我清理内容有很多行,如下所示: ['38','私人','193026','11','7','已婚 - 公民 - 配偶','工艺修复','丈夫','怀特','男','0' ,'0','40','美国','< = 50K']
现在我想将行的每个段拆分为单个数据集。 '38'例如进入“年龄”。 我看到我在这里有int和string。此外,我想让字符串以某种方式变成int。
当我做以下事情时:
for row in data_file:
row = row.strip()
row = row.split(",")
try:
row[0] = int (row [0]) #int(row(0))
except ValueError as e:
print (e)
continue
我收到错误: ValueError:int()的基数为10的无效文字:''
如果我将int(row [0])交换为int(row(0)) 我得到错误TypeError:'list'对象不可调用
不知怎的,我迷失了......
知道我做错了什么吗?
答案 0 :(得分:1)
如果您尝试将字符串转换为int
,请确保字符串中的内容是数字。在您的情况下,似乎您要解析的其中一行,您正在获得'' (空字符串)在第一个位置(row[0]
),它失败。
解决方法,以便在它对应时匹配整数,例如异常块中的continue
语句可能有效,但取决于您在这种情况下想要的内容。
答案 1 :(得分:0)
假设示例行实际上是您的上述内容:
现在,这就是你的清单:
row = ["['38'", " ' Private'", " ' 193026'", " ' 11th'", " ' 7'", " ' Married-civ-spouse'", " ' Craft-repair'", " ' Husband'", " ' White'", " ' Male'", " ' 0'", " ' 0'", " ' 40'", " ' United-States'", " ' <=50K']"]
基本上,您还需要剥离"["
。
或者,您可以使用exec
exec
执行字符串作为python代码。因此,这非常适合将行直接放入列表中。
for row in data_file:
exec("row = "+row)
#--------Your code----------
每一行看起来像:
39, State-gov, 77516, Bachelors, 13, Never-married, Adm-clerical, Not-in-family, White, Male, 2174, 0, 40, United-States, <=50K
你一直在以错误的顺序进行条带化和分割。
for row in data_file:
row = row.split(",")
for item in row:
item = item.strip()
try:
row[0] = int(row[0])
except ValueError as e:
print(e)
continue