五二电子网管理员组文章数量:1493
1、字符串line='\ufeffD0002044\x01大数据\x01数据分析\x01技术\x01工具\x01应用\n'
想提取出其中的“大数据”,“数据分析”,“技术”,“工具”,“应用”这些中文,用了正则表达式:
>>> pat2='\x01(.*?)'
>>> pile(pat2).findall(line)
>>> print(rs)
['', '', '', '', '']
显示的结果是空,请问如何才能正确的提出中文部分。
2、原文: 法规名称:'《中华人民共和国合同法》',Items:[{法条名称:'第五十二条'
匹配成: 《中华人民共和国合同法》第五十二条
(?<=法规名称:\').*?(\',Items:[{法条名称:\').*?(?=\') 请问这样匹配哪里错了?Python报: unterminated character set at position 22
3、Python re正则匹配中文,其实非常简单,把中文的unicode字符串转换成utf-8格式就可以了,然后可以在re中随意调用
unicode中中文的编码为/u4e00-/u9fa5,因此正则表达式u”[\u4e00-\u9fa5]+”可以表示一个或者多个中文字符
>>> import re
>>> s='中文:123456aa哈哈哈bbcc'.decode('utf8')
>>> s
u'\u4e2d\u6587\uff1a123456aa\u54c8\u54c8\u54c8bbcc'
>>> print s
中文:123456aa哈哈哈bbcc 。
如何用正则表达式匹配汉字?
一般情况下可以这样匹配中文,如图:&lt;img src="/50/edcbd2faf1a916675cec852bd886e599_hd.jpg" data-rawwidth="827" data-rawheight="600" class="origin_image zh-lightbox-thumb" width="827" data-original="/edcbd2faf1a916675cec852bd886e599_r.jpg"&gt;
先用靓汤或正则找到这个节点,再用上面的字符组匹配。
假设这个节点只有一个,用法如下:
import reimport requests as reqfrom bs4 import BeautifulSoupurl = 'xxx'html = (url).textbs = BeautifulSoup(html)span = bs.find_all('span', 'pro-title')'''span = re.findall('<span\sclass="pro-title">[^<]+</span>', html)s = span[0]m = re.findall('[\u4e00-\u9fa5]+', s)'''s = str(span)m = re.findall('[\u4e00-\u9fa5]+', s)print(m)
正则表达式匹配指定中文字符串
123456789101112131415161718192021222324252627282930313233public void ShowStructure(){ //要匹配的字符串 string text = "早上好aaa您好bbb大家好ddd……"; //正则表达式 string pattern = @"[\u4e00-\u9fff]+"; Regex r = new Regex(pattern); //使用正则表达式匹配字符串,仅返回一次匹配结果 Match m = r.Match(text); while (m.Success) { //显示匹配开始处的索引值和匹配到的值 System.Console.WriteLine("Match=[" + m + "]"); CaptureCollection cc = m.Captures; foreach (Capture c in cc) { Console.WriteLine("\tCapture=[" + c + "]"); } for (int i = 0; i < m.Groups.Count; i++) { Group group = m.Groups[i]; System.Console.WriteLine("\t\tGroups[{0}]=[{1}]", i, group); for (int j = 0; j < group.Captures.Count; j++) { Capture capture = group.Captures[j]; Console.WriteLine("\t\t\tCaptures[{0}]=[{1}]", j, capture); } } //进行下一次匹配. m = m.NextMatch(); }} 如果是GB码,可能是双字节GBK[0x81-0xfe][0x40-0xfe],也可能是四字节GB18030[0x81-0xfe][0x30-0x39][0x81-0xfe][0x30-0x39]。汉字在Unicode中称作CJK 统一表意符号 (CJK Unified Ideographs),包括
[\u+3400-\u+4dbf\u4e00-\u9fff\u+20000-\u3fffd\ue000-f8ff]
最后一项为PUA,参见百度百科【统一码】。
版权声明:本文标题:python怎么用正则表达式提取中文? 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.betaflare.com/web/1686494484a1974.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论