【发布时间】:2023-03-21 13:50:03
【问题描述】:
我有一个问题,在我们的应用程序中,在编写 python 脚本时,我们仅将文件数据用作字符串并仅作为字符串输出。然后我们用作文件的输出字符串,例如 xml 或 csv 下面是一个制表符分隔的 .txt 文件格式的例子,它将来自客户到我们的应用程序中。 H 是一个只会出现一次的标题,D 是可以重复的行级数据。 下面是关于这些字段是什么的规范。如何将此数据转换为 csv 格式或 xml 格式。我在 stackoverflow 上看到了很多示例,但都是关于打开文件并加载文件的。这在我的情况下不起作用。
H CustID CustPO OrderDate UserID EmergencyFlag
D <null> PartNumber Description Quantity
D <null> PartNumber Description Quantity
D <null> PartNumber Description Quantity
预期输入:
H 1520982 wpg-A10026 2020-11-24 STG N
D 52892 LAMP RED OVAL STOP TAIL TURN 2
D AL919338 ECU MODULE 2S/1M M/H PLC SELECT 1
预期的 CSV 输出:
H,1520982,wpg-A10026,2020-11-24,STG,N
D,,52892,LAMP RED OVAL STOP TAIL TURN,2
D,,AL919338,ECU MODULE 2S/1M M/H PLC SELECT,1
预期的 XML 输出:
<?xml version="1.0" encoding="utf-8"?>
<Record>
<Header>
<RecordType>H</RecordType>
<CustID>1520982</CustPO>
<CustPO>wpg-A10026</CustPO>
<OrderDate>2020-11-24</OrderDate>
<UserID>STG</UserID>
<EmergencyFlag>N</EmergencyFlag>
</Header>
<Details>
<RecordType>D</RecordType>
2nd field is null
<PartNumber>52892</PartNumber>
<Description>LAMP RED OVAL STOP TAIL TURN</Description>
<Quantity>2</Quantity>
</Details>
<Details>
<RecordType>D</RecordType>
2nd field is null
<PartNumber>AL919338</PartNumber>
<Description>ECU MODULE 2S/1M M/H PLC SELECT</Description>
<Quantity>1</Quantity>
</Details>
</Record>
我得到的输出但有些错误。如果您看到描述字段,它是一个完整的字段,但它被替换为逗号。但不是实际的制表位。
H 1520982 wpg-A10026 2020-11-24 STG N
D 52892 LAMP,,RED,OVAL,STOP,TAIL,TURN 2
D AL919338 ECU,MODULE,2S/1M,M/H,PLC,SELECT 1.
所以我所做的我将您的代码更正为 content[i] = filter(bool, content[i].split("\t")) 所以它实际上可以在有制表符分隔的地方给出逗号。 现在它似乎有点工作,但我在 Details D 下的第二个字段为空,所以我想要它作为两个逗号,但这并没有出现任何提示? 非常感谢您的宝贵时间。赞赏
我得到的当前输出如下 在“D”之后仍然存在两个问题,需要检查一个空值是否确实需要出现在输出中。第二期描述字段已经有一个逗号,所以需要与客户确认他们是否可以停止在描述字段中发送逗号或其他字符。或者为了获得更好的准确性,我需要将其转换为 xml。 但是仍然非常感谢你这是很好的开始 H,1520982,wpg-A10026,2020-11-24,STG,N D,52892,LAMP, 红色椭圆形停止尾转,2, D,AL919338,ECU MODULE 2S/1M M/H PLC SELECT,1,
【问题讨论】:
-
我已经浏览了您标记为“复制”的示例。这对我不起作用
标签: python