【问题标题】:Build CSV from parse files python从解析文件python构建CSV
【发布时间】:2012-04-28 18:00:19
【问题描述】:

我正在从 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"' in line:”,因为它只将包含 id = lat 的文件添加到列表“lat”中。我明白为什么,但我希望解析器返回并将 NoData 添加到列表中

对不起,我是从另一个 comp 写的问题。

【问题讨论】:

  • 请提供一些代码和有关您卡在哪里的信息。

标签: parsing csv text-files


【解决方案1】:

你的意思是这样的吗?

即:如果文件中没有一行包含 id="lat",它将在 lat 后面附加“No Data”。

            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...

【讨论】:

  • 谢谢你,我是个新手。
猜你喜欢
  • 2011-08-29
  • 2020-06-05
  • 2015-08-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-04-07
  • 1970-01-01
相关资源
最近更新 更多