Мне нужно прочитать файл журнала, извлечь все пути и вернуть отсортированный список путей, не содержащих дубликатов. Каков наилучший способ сделать это? Использование set
?Устранение дубликатов - использовать набор?
Я думал о чем-то вроде этого:
def geturls(filename)
f = open(filename)
s = set() # creates an empty set?
for line in f:
# see if the line matches some regex
if match:
s.add(match.group(1))
f.close()
return sorted(s)
EDIT
Элементы, поставленные в наборе пути строки, которые должны быть возвращены функциями как список, отсортированный в алфавитном порядке.
EDIT 2 Вот некоторые примерные данные:
10.254.254.28 - - [06/Август/2007: 00: 12: 20 -0700] «GET /Кайзер/22300/HTTP/1.0 "302 528" - " " Mozilla/5.0 (X11; U; Linux i686 (x86_64); en-US; rv: 1.8.1.4) Gecko/20070515 Firefox/2.0.0.4 " 10.254.254.58 - - [06/Aug/2007: 00: 10: 05 -0700] "GET /edu/languages/google-python-class/images/puzzle/a-baaa.jpg HTTP/1.0" 200 2309 "-" " googlebot-mscrawl-moma (предприятие ISE; bar-XYZ; foo123 @ google.com, foo123 @ google.com, foo123 @ google.com, foo123 @ google.com) " 10.254.254.28 - - [06/Aug/2007: 00: 11: 08 -0700]" GET /favicon.ico HTTP/1.0" 302 3404 "-" «Googlebot-mscrawl-MOMA (предприятие;. бар-XYZ,
интересная часть являются URLs между GET и HTTP Может быть, я хотел бы упомянуть, что это является частью упражнений, и нет реального мира данные.
Ваше изменение не помогло. – SilentGhost
@ Силлен, я думаю, он пытается сосредоточиться на дублированной проблеме, а не на регулярном выражении. –
@matthew: если мы не знаем, что он вкладывает в набор, как узнать, имеет ли порядок вопрос? – SilentGhost