Python:从字符串

时间:2016-09-26 10:01:27

标签: python regex urlparse

我尝试从网址请求中提取文字,但并非所有字典都包含带文字的密钥,当我尝试使用{k: v[0] for k, v in parse_qs(str).items()}网址时,我会丢失很多请求,所以我尝试str = urllib.unquote(u[0]) 。 之后我得到像

这样的字符串
смотреть лучше не бывает&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 个答案:

答案 0 :(得分: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("+", " ")解决。