提取python中的特定条件

2024-05-12 22:12:45 发布

您现在位置:Python中文网/ 问答频道 /正文

我创建了类似这样的python代码,但效果不好。 (结果不返回)

我只想提取“動詞" "名詞" "形容詞"

你知道吗

非常感谢你

m = MeCab.Tagger("-Ochasen")
for result in results:
 #     word = m.parse(result['text'])

    word = [line.split()[0] for line in m.parse(result['text']).splitlines() if "名詞" in line.split()[-1] 
                                for line in m.parse(result['text']).splitlines() if "動詞" in line.split()[-1] 
                                     for line in m.parse(result['text']).splitlines() if "形容詞" in line.split()[-1]]
    result['mecab'] = word

Tags: 代码textinforifparselineresult
2条回答

我只是在猜测你想做什么。我想你有一份结果清单。您尝试从结果列表中的每个结果元素中提取一组特定的字符。然后你需要做:

m = MeCab.Tagger("-Ochasen")
for result in results:
    result_text = result["text"]
    result_text = m.parse(result_text)
    text_lines = result_text.splitlines()
    word = None
    for line in text_lines:
        if "名詞" in line:
            word = "名詞"
        elif "動詞" in line:
            word = "動詞"
        elif "形容詞" in line:
            word = "形容詞"
    if word is not None:
        result['mecab'] = word

或者类似的东西

如果您使用已解析的数据,这会更容易。您应该使用fugashi,它也是MeCab包装器

import fugashi
tagger = fugashi.Tagger()
nodes = tagger.parseToNodeList("図書館から赤い本を借りた")
goodpos = ['名詞', '動詞', '形容詞']
nodes = [nn.surface for nn in nodes if nn.feature.pos1 in goodpos]
# => ['図書', '赤い', '本', '借り']

相关问题 更多 >