0

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

有什么方法可以提取吗?

4

1 回答 1

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

于 2016-09-26T10:09:48.837 回答