使用纯python的解决方案。。。在infile = "listdata.txt"
data = open(infile, "r").readlines()
dataDict = []
columns = []
# Create a dictionary list
for line in data:
row = line.split(";");
rowData = {}
for cell in row:
cell = cell.strip()[1:-1].split(",")
if len(cell) > 1:
rowData[cell[0].strip().strip('"').strip("'")] = cell[1].strip().strip('"').strip("'")
keys = rowData.keys()
dataDict.append(rowData)
columns = list(set(columns) | set(keys))
# Write dictionary list to file
outfile = "listdata.csv"
fp = open(outfile, "w")
for key in columns:
fp.write(key + ", ")
fp.write("\n")
for data in dataDict:
for key in columns:
if key in data:
fp.write(data[key] + ",")
else:
fp.write(",")
fp.write("\n")
fp.close()
输入:
^{pr2}$
输出:Status, Sent Time, To, ColumnName2, Message ID, Message Truncation, Priority, ColumnName,
Read,15/12/2010 05:56:36,,,012434,OK,Low,,
,15/12/2010 05:56:36,,012434,,OK,Low,Read,
,15/12/2013 05:56:36,Mrs green,,,OK,Low,,
更新
这将处理多个具有相同类型的条目,然后使用":"进行联接。在key = cell[0].strip().strip('"').strip("'")
value = cell[1].strip().strip('"').strip("'")
if key in rowData:
rowData[key] = rowData[key] + ":" + value
else:
rowData[key] = value