Скрипт Python для разделения URL

1

Я новичок в python, изучая основы.

Мой запрос: У меня есть несколько страниц, которые доступны как запрос из файла журнала, как показано ниже,

"GET /img/home/search-user-ico.jpg HTTP/1.1"  
"GET /SpellCheck/am.tlx HTTP/1.1"
"GET /img/plan-comp-nav.jpg HTTP/1.1" 
"GET /ie6.css HTTP/1.1"
"GET /img/portlet/portlet-content-bg.jpg HTTP/1.1"
"GET /SpellCheck/am100k2.clx HTTP/1.1" 
"GET /SpellCheck/am.tlx HTTP/1.1" 

Мой вопрос: я хочу только часть файла со страницы, Например, Рассмотрим "GET /img/home/search-user-ico.jpg HTTP/1.1" ,"GET /ie6.css HTTP/1.1" как страницу, а затем из вышеизложенного хочу разделить search-user-ico.jpg HTTP, ie6.css HTTP.

поэтому эксперты, пожалуйста, помогите мне написать python script для вышеперечисленного.

  • 0
    Часть HTTP, которая следует за обоими именами файлов, не является частью фактического имени файла. Вы уверены, что хотите соответствовать этому?
  • 0
    Итак, вы хотите «HTTP» в выходной строке, но не версию HTTP?
Теги:

4 ответа

2

Предполагая, что у вас нет пробелов в именах файлов и что вы не хотите "HTTP" в конце.

Вы можете разделить строку по пробелам.

parts = line.split(" ")

а затем используйте модуль os, чтобы получить имя файла из пути.

filename = os.path.basename(parts[1])

Например.

>>> line = "GET /img/home/search-user-ico.jpg HTTP/1.1"
>>> parts = line.split(" ")
>>> parts[1]
'/img/home/search-user-ico.jpg'
>>> os.path.basename(parts[1])
'search-user-ico.jpg'
  • 1
    В качестве однострочника предполагается, что entries являются списком / кортежем записей: filenames = [os.path.basename(entry.split()[1]) for entry in entries]
  • 0
    +1. @Jothi на тот случай, если вы не видели его до того, как @Blair изменил мой код в «понимание списков» - очень удобная функция Python.
1
data = [
"GET /img/home/search-user-ico.jpg HTTP/1.1",
"GET /SpellCheck/am.tlx HTTP/1.1",
"GET /img/plan-comp-nav.jpg HTTP/1.1" ,
"GET /ie6.css HTTP/1.1",
"GET /img/portlet/portlet-content-bg.jpg HTTP/1.1",
"GET /SpellCheck/am100k2.clx HTTP/1.1" ,
"GET /SpellCheck/am.tlx HTTP/1.1" 
]

for url in data:
    print url.split(' ')[1].split('/')[-2]
  • 0
    Это сломается во всех видах крайних случаев. Кроме того, он соответствует второй части последней средней строки, а не последней части.
0

Если формат ваших ссылок аналогичен. Другое решение:

request = "GET /img/home/search-user-ico.jpg HTTP/1.1"
parts = request.split("/")
parts[-2] //returns search-user-ico.jpg HTTP
0
data = [
"GET /img/home/search-user-ico.jpg HTTP/1.1",
"GET /SpellCheck/am.tlx HTTP/1.1",
"GET /img/plan-comp-nav.jpg HTTP/1.1" ,
"GET /ie6.css HTTP/1.1",
"GET /img/portlet/portlet-content-bg.jpg HTTP/1.1",
"GET /SpellCheck/am100k2.clx HTTP/1.1" ,
"GET /SpellCheck/am.tlx HTTP/1.1" 
]

for url in data:
    print url.split(' ')[1].split('/')[-1]

Ещё вопросы

Сообщество Overcoder
Наверх
Меню