2013-10-18 113 views
0

我有一個文本文件的Python閱讀的文本文件看起來如下:斯普利特

164,http://www.site.com/category1 
161,http://www.site.com/category2 
162,http://www.site.com/category3 
163,http://www.site.com/category4 

我試圖讓每一次新的行類別ID +類網址在for循環中。 我有別的方法的代碼看起來像以前一樣:

def main(): 
    config=ConfigParser.ConfigParser() 
    config.readfp(open("settings.cfg"),"r") 
    for site in config.sections(): 
     # ipdb.set_trace() 
     settings=dict(config.items(site)) 
     for (url,category) in zip(settings['url'].split(","),settings['category'].split(",")): 

誰能幫助我改變了settings.cfg的我的文本文件格式?

使用了一些研究,我發現網上的代碼看起來應該像這樣開始:

with open('categories.txt','r') as f: 
    for line in f: 

但需要通過剝離它「」和appeand網址,每個類別。但是,我害怕錯過這段代碼的第一行或最後一行,這是否會讀取所有內容並工作?有些幫助將會很棒!

回答

1

看起來像一個csv文件。試試:

import csv 

with open('categories.txt') as fp: 
    for category, url in csv.reader(fp): 
     print category, url 
+0

看來工作,但有後,一些行''回溯(最近通話最後一個)一個錯誤: 文件「 「readfile.py」,第4行,在 類別,url在csv.reader(fp)中: ValueError:太多的值解包'' – JoJoMe

+0

那麼,在這種情況下,你的文件是不一致的關於逗號分隔值。你能提供一個更大的文件例子嗎?其他答案告訴你如何使用'.split(「,」)'這可能適用於你的情況。否則,你可以用'values'替換'category,url',這將成爲一個列表。然後看看你在列表中得到了多少個值。 – Rolando

+0

是的好像我有一個,在某個地方刪除它,它的工作非常好。謝謝! – JoJoMe

0

這就是我該怎麼做的。

file1 = "myFile.txt"; 
tFile1 = open(file1,'r') 

for line in tFile1.readlines(): 
    lineParse = line.split(',') 
    lineNumber = lineParse[0]; 
    urlParse = lineParse[1].split('/'); 
    url = urlParse[2]; 
    category = urlParse[3]; 

    print str(lineNumber)+" "+"http://"+str(url)+" "+str(category) 
0

假設你想保留那些在名單列表,

urlcatlist=list() 
with open('categories.txt','r') as f: 

    for line in f: 
     urlcatlist.append(line.strip().split(",")) 
     #or print 
     print(line.strip().split(","))