【问题标题】:Error converting list to string将列表转换为字符串时出错
【发布时间】:2014-03-17 17:51:31
【问题描述】:

我正在尝试指定我希望将数据写入输出文件的位置,但出现以下错误。能否告知我如何解决此问题?

Traceback (most recent call last):
  File "C:/Python33/Upstream and downstream shores.py", line 20, in <module>
    upstream_shore.writerow (line[0] + [upstream_1] + line[1])
TypeError: Can't convert 'list' object to str implicitly

这是我的代码:

import csv

file1 = open ('fileA.csv', 'rt', newline ='')
reader = csv.reader(file1)

upstream = open ('fileB.csv', 'wt', newline = '')
upstream_shore = csv.writer(upstream)

downstream = open ('fileC.csv', 'wt', newline = '')
downstream_shore = csv.writer(downstream)

count_upstream = 0
count_downstream = 0

for line in reader:
    downstream = [(int(x) - 2000) for x in line[2]]
    upstream = [(int(y) - 2000) for y in line [1]]
    upstream_1 = str(upstream)
    downstream_1 = str(downstream)
    upstream_shore.writerow (line[0] + [upstream_1] + line[1])
    count_upstream += 1
    downstream_shore.writerow(line[0] + line [2] + [downstream_1])
    count_downstream += 1

 print ('Number of upstream shore counts:', count_upstream)
 print ('Number of downstream shore counts:', count_downstream)

file1.close()
upstream.close()
downstream.close()

谢谢

【问题讨论】:

  • 顺便说一句,python 错误很清楚。您在错误中没有理解什么?

标签: python string list csv


【解决方案1】:

在下面一行:

upstream_shore.writerow (line[0] + [upstream_1] + line[1])

line[0](和line[1])是一个字符串,而不是一个列表。 Python 试图连接一个字符串和一个列表,但它不知道如何连接,所以它给了你TypeError。您可能想要 [line[0]] 而是连接 2 个列表(知道如何做),例如:

upstream_shore.writerow ([line[0]] + [upstream_1] + [line[1]])

注意,你会在 2 行之后再次遇到同样的错误。

【讨论】:

    【解决方案2】:

    您正在添加 line[0] 这是一个字符串 [upstream_1] 这是一个列表。您应该改用 [line[0]] 创建一个只有一项的列表。

    upstream_shore.writerow ([line[0]] + [upstream_1] + [line[1]])
    

    【讨论】:

    • 感谢您的两个回答。我希望我可以选择这两个答案作为我的最终答案。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-05-23
    • 2014-01-23
    • 2012-07-29
    • 2022-11-30
    • 2018-02-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多