Jak mogę znaleźć wszystkie rozpiętość jest z klasą 'blue'
które zawierają tekst w formacie:Jak znaleźć przęsła z konkretną klasą zawierającą określony tekst za pomocą pięknej zupy i re?
04/18/13 7:29pm
które mogłyby zatem być:
04/18/13 7:29pm
lub:
Posted on 04/18/13 7:29pm
w kategoriach budowy logiki, aby to zrobić, to jest to, co mam do tej pory:
new_content = original_content.find_all('span', {'class' : 'blue'}) # using beautiful soup's find_all
pattern = re.compile('<span class=\"blue\">[data in the format 04/18/13 7:29pm]</span>') # using re
for _ in new_content:
result = re.findall(pattern, _)
print result
Odnoszę się do https://stackoverflow.com/a/7732827 i https://stackoverflow.com/a/12229134, aby spróbować wymyślić sposób, aby to zrobić, ale powyższe jest wszystkim, co mam do tej pory.
edit:
wyjaśnić scenariusz, istnieje rozpiętość jest z:
<span class="blue">here is a lot of text that i don't need</span>
i
<span class="blue">this is the span i need because it contains 04/18/13 7:29pm</span>
i pamiętać tylko trzeba 04/18/13 7:29pm
nie reszta zawartości.
edit 2:
Próbowałem również:
pattern = re.compile('<span class="blue">.*?(\d\d/\d\d/\d\d \d\d?:\d\d\w\w)</span>')
for _ in new_content:
result = re.findall(pattern, _)
print result
i dostaje błąd:
'TypeError: expected string or buffer'
Mogłem pomyślnie uruchomić powyższy kod, ale nie działał on w mojej implementacji. Myślałem, że to możliwe, ponieważ istnieje " " pomiędzy datą i czasem w oryginalnym kodzie źródłowym, np. '04/18/13 19:29 '. dla odniesienia, dodałem '.replace (" "," ")' do oryginalnego ''obiektu czytającego urlop'' i zadziałało. dziękuję bardzo (do wszystkich respondentów!). – user1063287