为什么正则表达式无法检测到这个词?

时间:2017-12-01 22:29:14

标签: python search

我正在尝试创建一个检测单词的小程序,我有一个字符串,我希望能够提取特定的单词,这是到目前为止的代码:

import re

x = ('"weather":[{"id":801,"main":"clouds","description":"clouds","icon":"')

y = re.search(r'"main":"\w+"', str(x))
c = y.group(0)
z = re.search(r'\w+', str(c))

k = z.group(0)

print(k)
print(y)
print(z)

我希望能够检测到“主要”:'因为我想要检测的单词总是遵循这个词,我认为这是最简单的方法来提取我想要的单词。然而,每当我运行这个程序时,主要的单词都会返回给我,我已经尝试了几种方法来重新排列这些代码,但似乎没有任何工作,抱歉,如果它很明显,我是RE的新手。

2 个答案:

答案 0 :(得分:1)

您只需在原始模式中指定一个组:

import re

x = ('"weather":[{"id":801,"main":"clouds","description":"clouds","icon":"')

y = re.search(r'"main":"(\w+)"', str(x))
c = y.group(1)

print(y)
print(c)

但是这些评论表明,如果它是json,您可能只需要json库解析您的文本。

答案 1 :(得分:0)

要检测"main"后面的内容,您可以尝试:

import re

x = ('"weather":[{"id":801,"main":"clouds","description":"clouds","icon":"')
final_x = re.findall('(?<="main":)\s*"\w+"', x)

输出:

['"clouds"']