【问题标题】:Writing csv file from list but not all elements follow up从列表中写入 csv 文件但并非所有元素都跟进
【发布时间】:2020-03-13 14:13:16
【问题描述】:

我必须将教科书中的数据格式化为 csv 文件。在教科书中,我的数据已经用空格分隔,所以我制作了一个字符串列表(有些包含多个用空格分隔的数据)。

当我尝试将列表写入文本文件时效果很好,但是当我尝试将其写入 CSV 文件时,在字符串中间停止写入并转到列表中的下一个元素。不知道为什么我有一半以上的数据没有跟进。没有结束行字符或其他任何内容。

这是我的简单代码

# importing libraries
import os

# defining location of parent folder
BASE_DIRECTORY = r'C:\Users\CAVC071777\Documents\1_Projet\Riverstart\Intrant EDPR\6-Background Harmonics Data at POI\test'

output_file = open('output.csv', 'w')
output = []
outputString = ""
file_list = []
i = 0
# scanning through sub folders
for (dirpath, dirnames, filenames) in os.walk(BASE_DIRECTORY):
    for f in filenames:
        if 'txt' in str(f):
            e = os.path.join(str(dirpath), str(f))
            file_list.append(e)
for f in file_list: 
    txtfile = open(f, 'r')
    i = 0
    for line in txtfile:
        if i == 3:
            outputString = "=Date(""{0}"",""{1}"",""{2}"")+TEMPS(""{3}"",""{4}"",""{5}"")".format(line[46:48],line[40:42],line[43:45],line[58:60],line[61:63],line[64:66])
        if i > 8 and i < 71:
            outputString += line[9:71]
        i = i + 1
    output.append(outputString)
    outputString = ""

for row in output:
    print(row)
    output_file.write(row + "\n")

当我在我的 csv 文件中打开它时,0.830% 之后的所有数据都没有跟进:

当我在终端中打印包含我的数据的字符串列表时,它的格式很好,我的所有数据都在那里:

我尝试阅读的文本文件是这样的:

ET H

WHM1 SEL-735 日期:09/17/19 时间:11:46:03.726 HDW时间来源:ext

基本频率 = 60.0

谐波 IA IB IC IN VA VB VC

2 0.166% 0.137% 0.166% 0.000% 0.000% 0.020% 0.010%

3…………

等到60岁

image of the text file i try to read on

【问题讨论】:

  • 请验证一下,您可能把图片链接的描述放错了位置。
  • 我更喜欢使用 csv 特定的 python libaray 进行写入,而不仅仅是文件写入
  • 请在问题中提供一小部分数据样本,而不是提供下载链接。
  • “当我在我的 csv 文件中打开它时,有一半没有跟进”是什么意思?以什么方式或方式打开它?

标签: python python-3.x csv export-to-csv


【解决方案1】:

这里有两个问题:

  1. 您正在构建一个以空格分隔的文件
  2. 您正在使用 Excel

众所周知,Excel 对 csv 文件的支持很差。长话短说,您在同一系统上阅读从 Excel 构建的 csv 文件,它将顺利运行。我您阅读了一个专门为 your 系统构建的 csv 文件,它应该可以工作。在任何其他用例中,它可能会或不会正确加载...

这里 Excel 期望分隔符是 ;,因为它是法语区域设置的默认分隔符,或者 ,,如果你设法告诉它的话。由于行中没有,它只是尝试将所有内容放在第一个单元格中,并明显限制单个字段的长度。

如何解决:

  1. 使用 LibreOffice 或 OpenOffice。对于 除了 csv 的几乎所有功能,两者都远远超出 Excel。您可以在加载时声明分隔符是空格并控制正确解析行
  2. 更改 csv 文件中的行以使用您的 Excel 版本所期望的分隔符

【讨论】:

  • 感谢您的回答。如果我的所有数据都在同一个单元格中,我看不到任何问题。导出到 csv 后,我使用 excel 中的数据分隔符函数将其分散到多个单元格中。您所说的“并明显限制单个字段的长度”是什么意思,是否有任何长度限制?
  • @Vicot34 我尽可能避免在 Excel 中加载 csv 文件,但症状很明显:由于我不知道的原因,Excel 限制了它读取的内容的长度...
猜你喜欢
  • 2017-03-16
  • 1970-01-01
  • 2016-05-25
  • 2019-03-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多