我在让Python脚本执行我想做的事情时遇到问题。它似乎没有在修改我的文件。
我想要:
读取具有以下格式的* .csv文件
PropertyName :: PropertyValue,…,PropertyName :: PropertyValue,{ExtPropertyName :: ExtPropertyValue},…,{ExtPropertyName :: ExtPropertyValue}
我想删除PropertyName ::并只保留PropertyValue的一列
我想添加标题行
我试图通过逗号替换::值,但似乎无法正常工作:
fin = csv.reader(open('infile', 'rb'), delimiter=',')
fout = open('outfile', 'w')
for row in fin:
fout.write(','.join(','.join(item.split()) for item in row) + '::')
fout.close()
任何建议,无论是关于我的第一步问题,还是关于更大图片分辨率的建议,始终受到欢迎。谢谢。
一个人要求的UPDATE / EDIT,足以让我复习!
这是* .csv文件(输入)的第一行
InnerDiameterOrWidth::0.1,InnerHeight::0.1,Length2dCenterToCenter::44.6743867864386,Length3dCenterToCenter::44.6768028159989,Length2dToInsideEdge::44.2678260053526,Length3dToInsideEdge::44.2717800813466,Length2dToOutsideEdge::44.6743867864386,Length3dToOutsideEdge::44.6768028159989,MinimumCover::0,MaximumCover::0,StartConnection::ImmxGisUtilityNetworkCommon.Connection,
在理想的世界中,这就是我希望文本文件显示的样子(输出)
InnerDiameterOrWidth, InnerHeight, Length2dCenterToCenter,,,,,,,,,,,
0.1,0.1,44.6743867864386
所以一个标题行和列中的值
更新的JSON信息
每行的末尾都有JSON格式的文本:
{StartPoint::7858.35924983374[%2C]1703.69341358077[%2C]-3.075},{EndPoint::7822.85045874375[%2C]1730.80294308742[%2C]-3.53962362760298}
我需要用标头拆分为X Y Z和X Y Z
最佳答案
也许是这样的(假设每一行都有相同的键,并且顺序相同):
import csv
with open("diam.csv", "rb") as fin, open("diam_out.csv", "wb") as fout:
reader = csv.reader(fin)
writer = csv.writer(fout)
for i, line in enumerate(reader):
split = [item.split("::") for item in line if item.strip()]
if not split: # blank line
continue
keys, vals = zip(*split)
if i == 0:
# first line: write header
writer.writerow(keys)
writer.writerow(vals)
产生
localhost-2:coding $ cat diam_out.csv
InnerDiameterOrWidth,InnerHeight,Length2dCenterToCenter,Length3dCenterToCenter,Length2dToInsideEdge,Length3dToInsideEdge,Length2dToOutsideEdge,Length3dToOutsideEdge,MinimumCover,MaximumCover,StartConnection
0.1,0.1,44.6743867864386,44.6768028159989,44.2678260053526,44.2717800813466,44.6743867864386,44.6768028159989,0,0,ImmxGisUtilityNetworkCommon.Connection
我认为大多数代码都应该有意义,除了
zip(*split)
技巧外:基本上可以转置序列,即>>> s = [['a','1'],['b','2']]
>>> zip(*s)
[('a', 'b'), ('1', '2')]
这样就可以按照索引将元素分组在一起(第一个元素在一起,第二个元素等等)
关于python - Python CSV读取->写入;删除并替换PLUS:行尾为JSON格式,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15190260/