明白我的意思会更好。
以下是我正在解析的数据集中的一些选择:
1. [Hiroyuki]多用途洋葱,葱和记忆。同时吞噬了格里门根的金发。2020/12/18 V23
2. [Hiroyuki]新鲜度很重要。2019/02/11吞下节日
3. [Hiroyuki]让我们回答问什么。柴郡巧克力波特喝。
4. [Hiroyuki]您没有早起,这对您有害。.. 吞咽Lagunitas IPA时2019/04/14 D23
我试图抢劫那个名字。1是“格林伯格金发女郎”,2是“獭祭”,3是“柴郡巧克力波特”,4是“ Lagunitas IPA”
我尝试使用以下模式:
pattern = re.compile('(?<=[\?。!]).*(?=を[飲呑])')
我发现饮料总是紧跟着/を
或。我还看到,喝酒总是在或之后。呑
飲
。
?
如何才能做到这一点?
[EDIT]
请尝试以下方法:
#!/usr/bin/python
# -*- coding: utf-8 -*-
import re
import sys, codecs
sys.stdout = codecs.getwriter('utf_8')(sys.stdout)
str = u"""
1.【ひろゆき】万能ねぎとわけぎと記憶力。Grimbergen blondeを呑みながら。2020/12/18 V23
2.【ひろゆき】日本酒は鮮度が大事ですよ。 獺祭を呑みながら 2019/02/11
3.【ひろゆき】聞かれたことに答えてみようの回。Cheshire Chocolate Porter飲みつつ。
4.【ひろゆき】早起きは得しないし、体に悪いよね。。Lagunitas IPAを呑みながら 2019/04/14 D23
5.【ひろゆき】冬将軍強くね?温暖化どこいったの? PARISIS NOËLを呑みつつ 2019/01/26
6.【ひろゆき】運のいい人っているよね。科学的根拠ないけど。。LA VIRGEN MADRID LAGERを呑みながら 2020/01/16 J08
"""
m = re.finditer(ur'.*[。?]+\s?(.*?)を?[呑飲]', str)
for i in m:
print(i.group(1))
结果:
Grimbergen blonde
獺祭
Cheshire Chocolate Porter
Lagunitas IPA
PARISIS NOËL
LA VIRGEN MADRID LAGER
正则表达式的说明'.*[。?]+\s?(.*?)を?[呑飲]'
:
.*
匹配尽可能长,然后回溯以尝试以下正则表达式匹配。[。?]+
匹配一个或多个日文句号或问号的序列。\s?
匹配空白字符(如果有)。它删除饮料名称前的前导空白。?
在(.*?)
使最短(非贪婪)匹配,并且捕获组被分配给匹配的子。を?
如果考虑到情况,则在Japasene中有时会省略后置词“を”,从而匹配字符“を”。[呑飲]
匹配作为汉字变体的任何字符,即“喝酒”。在上.*
一篇文章中,领先者丢失了,并允许进行过多比赛。现在,正则表达式会尽可能地增加指针的数量,然后从右向左回溯。这就是为什么现在删除了不必要的子字符串的原因。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句