2013-10-18 115 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(","))