【问题标题】:Writing lists to a csv file, not writing as desired将列表写入 csv 文件,而不是按需要写入
【发布时间】:2018-08-10 16:44:45
【问题描述】:

当我运行此代码时,每个列表项都被分隔成单独的字母并用逗号分隔。

例如,如果我有列表stockName 持有'amazon' 和tickerName 持有'amzn' 作为每个受人尊敬的列表中的第一项,运行下面的代码将其存储为:

a,m,a,z,o,n
a,m,z,n

实际上我希望它在一行中:

amazon,amzn

代码:

with open('/Users/reubenmcqueen/Desktop/csvStoreFile.csv', 'w',) as myFile:
    writer = csv.writer(myFile)
    for a in range(0, len(stockName)):
        i = [stockName[a], tickerName[a]]
        writer.writerows(i)

【问题讨论】:

  • 显示您的列表...因为您所说的正在发生,这意味着您的列表只是字符串。
  • writer.writerows(i)(复数)更改为writer.writerow(i)(单数)。

标签: python python-3.x csv writer


【解决方案1】:

像这样使用writer.writerow(a,b)

data = ['amazon','amzn']
with open('art_ton_prices.csv','a') as test:
    writer = csv.writer(test)
    writer.writerow(data[0], data[1])

【讨论】:

  • 缺少一个 ]。为什么不只做writer.writerow(data)
  • 不需要 test.close() - with open (...) as ...: 会负责关闭,即使您一离开作用域块就会发生异常
  • stockNametickerName 应该是不同的列表。
  • ] 没有丢失,初始 [ 是错字,已更正。感谢您澄清关于 'with open .. as..' 构造的事情,相应地修复了帖子
【解决方案2】:

你应该使用writer.writerow(...)

stockName = ['amazon', 'apple']
tickerName = ['amzn', 'aapl']

with open('test.csv', 'w',) as myFile:
    writer = csv.writer(myFile)
    for stock, ticker in zip(stockName, tickerName):
        writer.writerow([stock, ticker])

【讨论】:

    猜你喜欢
    • 2016-09-26
    • 1970-01-01
    • 2015-04-24
    • 2017-12-03
    • 1970-01-01
    • 2012-12-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多