【问题标题】:Extract data from text file to "String only" csv with python使用python从文本文件中提取数据到“仅字符串”csv
【发布时间】:2020-08-04 16:56:19
【问题描述】:

我正在尝试将文本文件中的数据提取到 csv 表中。 我正在使用这个:

fileOutput = open(outputFolder + '/' + outputfile, mode='w+', newline='', encoding='utf-8')
file_writer = csv.writer(fileOutput, delimiter=',', quotechar='"', quoting=csv.QUOTE_MINIMAL)

但是,当我有一个像“0009”这样的值时,它在 csv 中被解析为“9”。 我的问题是: 有没有一种方法可以强制将所有值解析为字符串以按原样获取数据? 谢谢

【问题讨论】:

    标签: python csv parsing


    【解决方案1】:

    如果您将值作为字符串传递,CSV 编写器会包含前导 0,但如果您已经将值转换为整数,则不会。

    writer.writerow([int('0009')]) # writes "9" to the file
    writer.writerow(['0009']) # writes "0009" to the file
    

    当您传递一个整数时,它无法知道原始文本中有多少个前导零 - 该信息已被丢弃。您需要查看从原始文本文件中提取数据的代码,并阻止该代码转换为整数。

    【讨论】:

    • 您好!我的代码中没有转换,因为我有不同的短语和数字值。只是当涉及到数字时,它们在 CSV 中被视为 int。所以我想知道是否有办法让它们都被视为一个字符串。
    • 你能显示读取文本文件的代码是什么样的,以及实际写入 CSV 的代码(通过 file_writer.writerow 或其他方式)吗?您必须确保从文本文件中获取字符串并将它们作为字符串传递给编写器,然后它应该可以在没有任何额外设置的情况下工作。似乎必须有一些东西将文本文件中的数据解析为数字,否则 CSV 编写器已经像你想要的那样包含前导零。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-21
    • 1970-01-01
    • 2019-12-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多