Python-如何删除两个常量分隔符之间的所有数据 - 解析嘈杂的HTML数据

时间:2012-08-02 17:35:52

标签: python regex parsing beautifulsoup

我正在解析维基百科纯文本数据。无论出于何种原因,附加到每页末尾的是以下文本:

af:Vlermuis
ang:Hreaðemūs
ar:خفاش
an:Chiroptera
ast:Esperteyu
gn:Mbopi
ay:Chiñi
az:Yarasalar
bn:বাদুড়
zh-min-nan:Bi̍t-pô
be:Рукакрылыя
be-x-old:Рукакрылыя
bg:Прилепи
br:Askell-groc'hen
ca:Ratpenat
cv:Çара çерçи евĕрлисем
cs:Letouni
co:Topu pinnutu
cy:Ystlum
da:Flagermus
de:Fledertiere
nv:Jaaʼabaní Danilínígíí
et:Käsitiivalised
el:Νυχτερίδα
eml:Pipistrel
es:Chiroptera
eo:Kiropteroj
eu:Saguzar
fa:خفاش
fo:Flogmýs
fr:Chiroptera
ga:Ialtóg
gd:Ialtag
gl:Morcegos
gan:簷老鼠
hak:Phi̍t-phò-è
xal:Бавуха
ko:박쥐
hi:चमगादड़
hr:Šišmiši
io:Vespertilio
id:Kelelawar
ia:Vespertilion
is:Leðurblaka
it:Chiroptera
he:עטלפים
jv:Lawa
pam:Talibatab
ka:ხელფრთიანები
kk:Қолқанаттылар
rn:Agahungarema
sw:Popo
ht:Chòvsourit
ltg:Plykspuorņi
la:Chiroptera
lv:Sikspārņi
lt:Šikšnosparniai
lij:Chiroptera
li:Vleermuis
ln:Ngɛmbo
hu:Denevérek
mk:Лилјаци
ml:വവ്വാൽ
mr:वटवाघूळ
ms:Kelawar
mdf:Веньдряв
my:လင်းနို့
nah:Tzinācantli
nl:Vleermuizen
ne:चमेरो
ja:コウモリ
frr:Fladermüsen
no:Flaggermus
nn:Flaggermus
nrm:Caûque-souothis
nov:Chiroptera
oc:Chiroptera
koi:Кушборддэз
pcd:Soerie-volante
pms:Ratavolòira
pl:Nietoperze
pt:Morcego
ro:Chiroptere
rm:Utschè-mezmieur
qu:Masu
ru:Рукокрылые
sah:Илии кынаттаахтар аймахтара
sc:Chiroptera
sco:Baukie
stq:Flädderdierte
sq:Lakuriqi i natës
scn:Taddarita (armalu)
simple:Bat
sk:Netopiere
sl:Netopirji
sr:Слепи мишеви
sh:Šišmiš
su:Kalong
fi:Lepakot
sv:Fladdermöss
tl:Paniki
ta:வௌவால்
te:గబ్బిలం
th:ค้างคาว
tg:Кӯршапарак
chy:Méšenonetsénóne
tr:Yarasa
uk:Кажани
ur:چمگاڈر
vi:Bộ Dơi
war:Kabog
yo:Àdán
zh-yue:蝙蝠
zea:Vleermuzen
zh:蝙èン

删除“af”和“zh”之间的所有内容的最pythonic方法是什么?

1 个答案:

答案 0 :(得分:1)

我正在做一些维基百科解析,并遇到了类似的问题。但是,并非所有我正在解析的页面底部都有该文本,所以我从未解决过这个问题。

这是让你入门的东西。使用index vs rindex,并检查off-by-ones。

def delete_everything_in_between(st, start, end):
    first_index = st.index(start)
    second_index = st.index(end)
    return st[:first_index] + st[second_index:]

delete_everything(st, 'af', 'zh')

当然,如果你愿意假设垃圾文本总是在输入的末尾,你可以找到第一个索引并返回st [:first_index]。