2016-09-26 254 views
0

我嘗試從url請求中提取文本,但並非所有字典都包含帶文本的關鍵字,並且當我嘗試使用{k: v[0] for k, v in parse_qs(str).items()}來發佈網址時,我失去了很多請求,因此我嘗試了str = urllib.unquote(u[0])。 之後,我得到這樣Python:從字符串中提取文本

смотреть лучше не бывает&clid=1955453&win=176 
Jade+Jantzen&ie=utf-8&oe=utf-8&gws_rd=cr&ei=FQB0V9WbIoahsAH5zZGACg 
как+скрыть+лопоухость&newwindow=1&biw=1366&bih=657&source=lnms&sa=X&sqi=2&pjf=1&ved=0ahUKEwju5cPJy83NAhUPKywKHVHXBesQ_AUICygA&dpr=1 
смотреть лучше не бывает&clid=1955453&win=176 
2&clid=1976874&win=85&msid=1467228292.64946.22901.24595&text=как выбрать смартфон 
маскаи гейла&lr=10750&clid=1985551-210&win=213 

字符串,我想

смотреть лучше не бывает 
Jade Jantzen 
как скрыть лопоухость 
смотреть лучше не бывает 
как выбрать смартфон 
маскаи гейла 

什麼辦法可以提取?

回答

1

通過&剛剛拆分,並採取第一部分:

txt = urllib.unquote(u[0]).split("&")[0] 

,不使用str作爲變量名 - 這是一個內置的Python類型名稱。

編輯: 可惜的是此2&clid=1976874&win=85&msid=1467228292.64946.22901.24595&text=как выбрать смартфон線具有比其它不同的圖案。與其他人一起處理這個問題並不常見。我很想用正則表達式來匹配西里爾字符,但是Jade Jantzen不匹配。因此,對於這一行,所需的文字是在末尾,像

txt = urllib.unquote(u[0]).split("=")[-1] 

會工作。你還沒有提供任何實際的標準爲所需的文字。作爲人類,我們可以說如何從這個特定的樣本中將你得到的東西變成你想要的東西。但是如果沒有明確的規則來匹配,我們不能提供完整的解決方案。

我知道一些(還有一些)行有"+"代替" "。這可以通過.replace("+", " ")來解決。

+0

你可以說,如果字符串看起來像'213&msid = 1466344978.51184.22872.22654&text =дэрилдиксон' –

+1

我忽略了這一行。沒有通用的方法來與其他人一起處理這個問題。對於這個,分割應該在'='上發生,最後一部分應該被採用。 – ElmoVanKielmo