2016-09-26 238 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