【问题标题】:How to use the writerow function in Python [duplicate]如何在 Python 中使用 writerow 函数 [重复]
【发布时间】:2021-09-09 07:25:38
【问题描述】:

我使用 csv 将行写入空文本文件,但是当我打开文本文件时,我看到每个字母/字符之间都有一个空格。我不知道我做错了什么。

这是我的代码:

import csv
import configparser

# Read local `config.ini` file.
config = configparser.ConfigParser()                                     
config.read(r'C:\data\FF\Desktop\Studio\cfg.ini')

header_1= config['HEADERS']['headers_1']
header_2 =config['HEADERS']['headers_2']

full_path = r'C:\data\FF\Desktop\Studio\New Text Document.txt' 

with open(full_path, 'w') as output:
    writer = csv.writer(output, delimiter = '\t')
    writer.writerow(header_1)
    writer.writerow(header_2)

这是 cfg.ini 的样子:

[HEADERS]
headers_2 = ['VEHICLE', 'MODEL', 'DSG', 'YEAR', 'MONTH', 'DAY', 'HOUR', 'MINUTE','SECOND']

headers_1 = ['*****data*****']

这是 New Text Document.txt 的样子:

【问题讨论】:

  • 问题不在于csv.writerow,而在于您如何从cfg.ini 读取列表。您阅读字符串,而不是列表(如您所想)。并修复额外的空白行 - 检查stackoverflow.com/q/3348460/4046632
  • @buran 好的,现在空白行已解决,但字符串/列表故事没有。
  • 你检查了我第一条评论中的链接吗?
  • 可以,但无法解决。
  • 导入json,然后导入header_1 = json.loads(config['HEADERS']['headers_1'])。那是假设您没有更改cfg.ini 中的当前格式,仅将' 替换为"(双引号,而不是2 个单引号)

标签: python csv configparser


【解决方案1】:

问题不在于csv.writerow,而在于您如何从cfg.ini 读取列表。您阅读字符串,而不是列表(如您所想)。检查Lists in ConfigParser 并且要修复额外的空白行(在 Windows 上使用 csv 模块时),您需要指定 newline='' - 检查 CSV file written with Python has blank lines between each row

cfg.ini

[HEADERS]
headers_2 = ["VEHICLE", "MODEL", "DSG", "YEAR", "MONTH", "DAY", "HOUR", "MINUTE","SECOND"]
headers_1 = ["*****data*****"]

您的文件:

import csv
import configparser
import json

# Read local `config.ini` file.
config = configparser.ConfigParser()                                     
config.read(r'C:\data\FF\Desktop\Studio\cfg.ini')

header_1 = json.loads(config['HEADERS']['headers_1'])
header_2 = json.loads(config['HEADERS']['headers_2'])

full_path = r'C:\data\FF\Desktop\Studio\New Text Document.txt' 

with open(full_path, 'w', newline='') as output:
    writer = csv.writer(output, delimiter = '\t')
    writer.writerow(header_1)
    writer.writerow(header_2)

【讨论】:

  • 您的问题应该以 [double] 重复的形式结束,而不是投票。我发布答案,只是为了避免对我在 cmets 中的建议产生任何误解。
  • @buran 我认为他是对的,您标记的问题并不那么清楚。我们还需要尊重 mediterraneo 提出问题的方式,非常清楚他在寻找什么。
  • 不能更同意@NorthAfrican,这个问题很清楚,我们看到他想要什么。显然,除了尊重和赞成之外,什么都不值得。 (尽管您的链接有些重复)许多开发人员可以从这个问题的提问方式中学习。
猜你喜欢
  • 2012-12-16
  • 2019-05-02
  • 2019-05-03
  • 1970-01-01
  • 2019-07-21
  • 1970-01-01
  • 2016-03-26
  • 1970-01-01
  • 2018-12-08
相关资源
最近更新 更多