从解析文件python构建CSV

时间:2012-04-28 18:00:20

标签: parsing csv text-files

我正在建立一个小型数据库(供个人使用),来自1000多个文件。我正在寻找特定的单词,但是如果文件中没有包含该单词,我会遇到的问题如何编写NoData行,我想要的是:

  • 非洲博茨瓦纳测试51.1922546 -113.9366341
  • 非洲肯尼亚跳伞肯尼亚-13.788388 33.78498
  • 非洲马拉维跳伞马拉维NoData NoData
  • 非洲毛里求斯SkyDive Austral 30.5000854 -8.824510574
  • 非洲摩洛哥Beni Mellal NoData NoData
for i in os.listdir(Main_Path):
    if "-" in i:
        for filename in os.listdir(Main_Path+i):
            if ".dat" in filename and os.path.isdir(Main_Path+i):
                f_split = filename.split("-")
                if len(f_split) == 4:
                    continent.append(f_split[0])
                    country.append(f_split[1])
                    state.append(f_split[2].split(".")[0])
                else:
                    continent.append(f_split[0])
                    country.append("")
                    state.append(f_split[1].split(".")[0])
                d = open(Main_Path+i+"/" + filename, "r")
                files = d.readlines()
                d.close()
                for k, line in enumerate(files):
                    if "Dropzone.com :" in line:                        
                        dzname.append(line.split(":")[1].strip())
                   elif 'id="lat"' in line:
                        lat.append(line.split("=")[3].split('"')[1].strip())
myFile = open(Main_Path+"MYFILE.csv", "wb")
wtr= csv.writer( myFile )
for a,b,c,d,e in zip(continent,country,state,dzname,lat):
    wtr.writerow([a,b,c,d,e])
myFile.close()

我堆叠“elif'id =”lat“'在行:”因为它只向包含id = lat的文件添加到列表“lat”。我明白为什么,但我希望解析器返回并向列表中添加NoData

抱歉,我从另一个comp中写了这个问题。

1 个答案:

答案 0 :(得分:0)

你的意思是这样吗?

即:如果文件中没有行包含id =“lat”,它会将“无数据”附加到lat。

            snip...

            d = open(Main_Path+i+"/" + filename, "r")
            files = d.readlines()
            d.close()
            found_latitude = False
            for k, line in enumerate(files):
                if "Dropzone.com :" in line:                        
                    dzname.append(line.split(":")[1].strip())
               elif 'id="lat"' in line:
                    found_latitude = True
                    lat.append(line.split("=")[3].split('"')[1].strip())
            if not found_latitude:
                lat.append("No Data")

            snip...