2014-01-23 29 views
1

我有一些txt文件,有很多网址,像这样的especific链接:在文件中查找

www.example.com/spare_parts/M2541.htm 
www.example.com/spare_parts/M3511.htm 
www.example.com/spare_parts/C6501.htm 
www.example.com/spare_parts/M2800.htm 
www.example.com/custom_parts/M1808.htm 
www.example.com/custom_parts/R2202.htm 

我要的是一个链接排序列表。我设法加载我的txt文件并在python中逐行读取,但是我不能对其进行排序,因为我找到的所有示例都在寻找单词,在这种情况下,我需要以M开头的所有备件的链接。谁来帮帮我?

for line in text: 
    if 'spare_parts' in line: 
     print texto2(line) 
    else: 
     print texto3(line) 
+4

,你能告诉我们你已经做了什么? – woozyking

+3

你想*排序*或*过滤器*? – mhlester

+0

我试图通过搜索单词(spare_parts),但它不显示任何结果。我会发布我的代码 – RTD

回答

1
parts=[] 
FirstLetter='M' 
fp=open('textfile.txt') 
for line in fp: 
    if 'spare_parts' in line: 
     part =line.rstrip().split('/')[-1].strip('.htm') 
     if part.startswith(FirstLetter): 
      parts.append(part) 

print sorted(parts) 

输出: ['M2541','M2800','M3511']

+0

'.readlines()'如果文件真的很大,可能会遇到麻烦。 'file_obj'中的行会更好。 –

+0

非常感谢阿育王,我需要全线,我会从网上抓住这个HTM。但这也将是有用的后 – RTD

+0

@Bibhas,谢谢你的提示。我不知道我能做到这一点。 –

0

如果我正确理解你的问题,你正在寻找一个过滤器:

urlList = [ 
    "www.example.com/spare_parts/M2541.htm", 
    "www.example.com/spare_parts/M3511.htm", 
    "www.example.com/spare_parts/C6501.htm", 
    "www.example.com/spare_parts/M2800.htm", 
    "www.example.com/custom_parts/M1808.htm", 
    "www.example.com/custom_parts/R2202.htm" 
] 
sparePartsStartingWithMList = [line for line in urlList if ("/spare_parts/M" in line)] 

的重要行是最后一行,这是一个列表理解返回一个列表,其中包含所有具有“/ spare_parts/M”的字符串。等效循环将是这样的:

sparePartsStartingWithMList = [] 

for line in urlList: 
    if ("/spare_parts/M" in line: 
     sparePartsStartingWithMList.append(line) 

由于您的网址的性质,所有备件目录/spare_parts下,你的所有零部件都有自己的标识作为文件名。因此,您可以搜索路径的相关部分,即文件夹后跟目录分隔符(/),然后是零件标识的第一个字母。的sparePartsStartingWithMList

值:

sparePartsStartingWithMList = [ 
    "www.example.com/spare_parts/M2541.htm", 
    "www.example.com/spare_parts/M3511.htm", 
    "www.example.com/spare_parts/M2800.htm" 
] 
+0

感谢Kroltan,当我到达下一步时,它也会有所帮助 – RTD