2014-01-23 6 views
1

У меня есть некоторые текстовые файлы с большим количеством адресов, как это:Найти 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. Can кто-нибудь Помогите мне?

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

Спасибо Ashoka, acutally мне нужна полная линия, я захвачу эту 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) 

В силу характера ваших URL-адресов, все запасные части находятся в каталоге /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

Смежные вопросы