【问题标题】:Python CSV scriptPython CSV 脚本
【发布时间】:2013-10-19 23:37:15
【问题描述】:

我正在尝试通过复制 col#3 添加新列,然后将 @hotmail 附加到新列

这是脚本,唯一的问题是它不会完成对输入文件的处理,它只在输出文件中显示 61409 行,而在输入文件中有 61438 行。
此外,还有一条错误消息(输入文件末尾没有空行):
电子邮件 = 行 [3] IndexError: 列表索引超出范围

inFile = 'c:\\Python27\\scripts\\intake.csv'
outFile = 'c:\\Python27\\scripts\\final.csv'

with open(inFile, 'rb') as fp_in1, open(outFile, 'wb') as fp_out1:
    writer = csv.writer(fp_out1, delimiter=",")
    reader = csv.reader(fp_in1, delimiter=",")
    for col in reader:
        del col[6:]
        writer.writerow(col)
    headers = next(reader)
    writer.writerow(headers + ['email2'])
    for row in reader:
        if len(row) > 3:
            email = email.split('@', 1)[0] + '@hotmail.com'
        writer.writerow(row + [email])

【问题讨论】:

  • 您的错误消息似乎是指代码中没有的行。如果您在访问row[3] 时收到IndexError,那么只需在访问之前添加print row,看看哪一行给您带来了麻烦。对于您发布的代码,在您完成 for col in reader: 循环后,您位于文件的末尾,所以我看不到 next(reader)for row in reader: 将如何工作/做任何事情。
  • 我同意@DSM,你应该发布你的实际代码,或者行为相同的东西。
  • 您使用的是之前问题中的代码:stackoverflow.com/questions/19324968/python-csv-copy-column 吗?如果是这样,也许您应该添加到该问题而不是开始一个新问题。

标签: python csv


【解决方案1】:

您似乎编辑了您在之前的答案中收到的代码。

改变

email = email.split('@', 1)[0] + '@hotmail.com'

email = row[3].split('@', 1)[0] + '@hotmail.com'

【讨论】:

    猜你喜欢
    • 2016-11-27
    • 1970-01-01
    • 2017-01-31
    • 2016-11-14
    • 2016-04-11
    • 1970-01-01
    • 1970-01-01
    • 2021-08-30
    • 1970-01-01
    相关资源
    最近更新 更多