首页 > 解决方案 > 用python格式化数据

问题描述

大家好,我有这个文件,我需要清理它,不知道从哪里开始

['GB', 'LINCOLN'] ['GB;ENG;Lincoln\n'] 3396
(['IT', 'SEGRATE'], "IT~25~Segrate'\n", 3397)
(['IT', 'SEGRATE'], "IT~25~Segrate'\n", 3398)
(['MX', 'IZTAPALAPA', 'CIUDAD DE MEXICO'], "MX~CMX~Iztapalapa'\n", 3399)
(['US', 'VA', 'CHESAPEAKE'], "US~VA~Chesapeake'\n", 3400)
(['US', 'GA', 'UNION CITY'], "US~GA~Union City'\n", 3401)
['GB', 'HULL'] ['GB;ENG;Sutton', 'on', 'Hull\n'] 3402

理想情况下,我希望输出的是 csv 文件。

GB,LINCOLN,GB,ENG,Lincoln
MX,IZTAPALAPA,CIUDAD DE MEXICO,MX,CMX,Iztapalapa

这个文件是极其不一致的数据,所以我不确定我将如何做到这一点。

我不是程序员,所以我在这里有点挣扎。

标签: pythonformatting

解决方案


您可以使用以下代码来完成这项工作:

with open("filetoopen.txt","r") as f:
    lines = f.readlines()


no = ['[',']','(',')','\'','\"',' ']
com = [';','~']
li = []

for i in range(len(lines)):
    for j in range(len(lines[i])):
        if lines[i][j] == '\\':
            break
        elif lines[i][j] in com:
            li.append(',')
        elif lines[i][j] not in no and lines[i][j] not in com:
            li.append(lines[i][j])            
    li.append("\n")
li.pop()

ans = ''.join(li)

with open("mycsv.csv", "w") as g:
    g.write(ans)
f.close()
g.close()


推荐阅读