Python: 从字符串中提取文本

Python: extract text from string

我尝试从 url 请求中提取文本,但并非所有字典都包含文本键,当我尝试使用 {k: v[0] for k, v in parse_qs(str).items()} 到 url 时,我失去了很多的请求,所以我尝试 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
как скрыть лопоухость
смотреть лучше не бывает
как выбрать смартфон
маскаи гейла

有什么方法可以提取吗?

只需拆分 & 并取第一部分:

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("+", " ").

来解决