Python:分割文件行时出错

时间:2014-11-22 23:49:51

标签: python list file dictionary

我生气了,我得到了一个错误。从互联网上读取文件到目前为止,我清理内容有很多行,如下所示: ['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'对象不可调用

不知怎的,我迷失了......

知道我做错了什么吗?

2 个答案:

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