首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >CSV报头用管道分隔,但数据有不同的分隔符。

CSV报头用管道分隔,但数据有不同的分隔符。
EN

Stack Overflow用户
提问于 2022-09-11 10:49:50
回答 2查看 46关注 0票数 -1

代码语言:javascript
复制
part|24|vendor|0C|year|02|orgid|0E|date|03|tag|64
def0cdf7-e1bb-40fb-baf0-37e0c45b0cac30303039363321FR423808711364296Progressive uniform circuit
3e813cae-4f44-44ac-85b9-fa67c622791230303038303321SI235522319644338Multi-lateral eco-centric contingency
cd2128df-2336-427e-9ab7-94c2e6f6f23330303038313221MU34NYRU039046346Enterprise-wide impactful encoding
9580b7a1-b66b-48fb-9b22-385edb494abc30303037333321FR482592279169087Upgradable bi-directional implementation
27c31e43-0bf4-4220-ab88-e7643f3c6aa430303032373921AE853769731996032Realigned web-enabled hardware
01a32274-50bf-4a74-93ff-841cb70aeab030303035353721AE285621632570102Quality-focused 5th generation productivity
1491e670-5ecd-45c5-b85b-4f3273b4084930303034343321HU304042484774357Expanded asynchronous help-desk
5bb78560-51ca-4b86-b9fc-81d9610ab6c230303031333821BE429904898168225Visionary bi-directional paradigm
03718e50-5592-422d-b093-d7eaa7b69c6c30303039303121PL290819609662037Optimized 6th generation internet solution
826fefce-2730-4f4e-aeb4-39a9b0c4455030303034333621SM94M589367740206Persevering bottom-line core
80070dfe-9bc2-40cc-9458-46f04a30df0c30303037353721LB104536QN2PGL041Enhanced bifurcated service-desk

我到处都找过了,但没找到。标题似乎是管道分隔的。但是文件中的数据不是由管道分隔的。

part|24|vendor|0C|year|02|orgid|0E|date|03|tag|64

EN

回答 2

Stack Overflow用户

发布于 2022-09-12 08:09:04

现在还不清楚你想做什么。问一个明确的问题很重要,这样人们才能帮助你。

数据似乎有两种不同的格式,这是正确的。标题由“by”(管道)分隔,其下面的行没有任何分隔。

这可能不是一个人们可以在这里帮助你的问题。它与数据的清理有关。您需要找到原始数据,或者与创建数据的人员一起清理数据。

票数 0
EN

Stack Overflow用户

发布于 2022-09-14 10:47:37

标题给出了以下行的固定宽度字段长度。每个长度都是用十六进制编码的。数据行根本没有分隔符。

您需要首先读取头部并将每个十六进制条目转换为整数。然后,可以读取每一行并根据每个字段的长度对其进行切片。

可以这样做:

代码语言:javascript
复制
import csv

with open('input.csv') as f_input, open('output.csv', 'w', newline='') as f_output:
    header = next(f_input).strip().split('|')
    fields = [(field, int(length, 16)) for field, length in (zip(*[iter(header)] * 2))]
    csv_output = csv.DictWriter(f_output, fieldnames=[field for field, length in fields])
    csv_output.writeheader()

    for line in f_input:
        line = line.strip()
        row = {}
        offset = 0
        
        for field, length in fields:
            row[field] = line[offset : offset + length]
            offset += length
            
        csv_output.writerow(row)

提供转换后的CSV输出文件如下:

代码语言:javascript
复制
part,vendor,year,orgid,date,tag
def0cdf7-e1bb-40fb-baf0-37e0c45b0cac,303030393633,21,FR423808711364,296,Progressive uniform circuit
3e813cae-4f44-44ac-85b9-fa67c6227912,303030383033,21,SI235522319644,338,Multi-lateral eco-centric contingency
cd2128df-2336-427e-9ab7-94c2e6f6f233,303030383132,21,MU34NYRU039046,346,Enterprise-wide impactful encoding
9580b7a1-b66b-48fb-9b22-385edb494abc,303030373333,21,FR482592279169,087,Upgradable bi-directional implementation
27c31e43-0bf4-4220-ab88-e7643f3c6aa4,303030323739,21,AE853769731996,032,Realigned web-enabled hardware
01a32274-50bf-4a74-93ff-841cb70aeab0,303030353537,21,AE285621632570,102,Quality-focused 5th generation productivity
1491e670-5ecd-45c5-b85b-4f3273b40849,303030343433,21,HU304042484774,357,Expanded asynchronous help-desk
5bb78560-51ca-4b86-b9fc-81d9610ab6c2,303030313338,21,BE429904898168,225,Visionary bi-directional paradigm
03718e50-5592-422d-b093-d7eaa7b69c6c,303030393031,21,PL290819609662,037,Optimized 6th generation internet solution
826fefce-2730-4f4e-aeb4-39a9b0c44550,303030343336,21,SM94M589367740,206,Persevering bottom-line core
80070dfe-9bc2-40cc-9458-46f04a30df0c,303030373537,21,LB104536QN2PGL,041,Enhanced bifurcated service-desk
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73678636

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档