2012-04-28 41 views
0

我正在构建一个小型数据库(供个人使用),超过1000个文件。我在寻找特定的词,但我有,如果这个词是不包含我怎么能写无数据线文件中的问题,我想拥有的是:从解析文件构建CSV python

  • 非洲博茨瓦纳测试51.1922546 -113.9366341
  • 非洲肯尼亚肯尼亚跳伞-13.788388 33.78498
  • 非洲马拉维马拉维跳伞的无数据无数据
  • 非洲毛里求斯跳伞澳30.5000854 -8.824510574
  • 非洲摩洛哥贝尼迈拉勒的无数据无数据
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写了问题。

+0

请提供一些关于您卡在哪里的代码和信息。 – miku 2012-04-28 18:23:29

回答

0

你的意思是这样的吗?

即:如果文件中没有行包含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... 
+0

谢谢,我是一个新手。 – 2012-04-29 10:22:19