python 读取带中文的文件

Python015

python 读取带中文的文件,第1张

如果碰上中文文件名,必须用cp936或gb18030去解码它。如果你写了一个中文的文件名,而python根据utf-8规则去把它翻译成字节,就会在底层的文件名上不匹配,因为该中文在cp936的规则下翻译成另外的字节。报错是找不到该文件。

我参照了很多网上内容,有以下三种解决方法,前两种类似,是用unicode:

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

>>>re.match(u"[\u4e00-\u9fa5]+",s)

<_sre.SRE_Match object at 0xb77742c0>

>>>pat='中文'.decode("utf8")

>>>re.search(pat,s)

<_sre.SRE_Match object at 0x16a16df0>

>>>newpat='这里是中文内容'.decode("utf8")

>>>news=re.sub(pat,newpat,s)

>>>print news

这里是中文内容:123456aa哈哈哈bbcc

from:http://blog.aizhet.com/web/12078.html

1、字符串line='\ufeffD0002044\x01大数据\x01数据分析\x01技术\x01工具\x01应用\n'

想提取出其中的“大数据”,“数据分析”,“技术”,“工具”,“应用”这些中文,用了正则表达式:

>>> pat2='\x01(.*?)'

>>> rs=re.compile(pat2).findall(line)

>>> print(rs)

['', '', '', '', '']

显示的结果是空,请问如何才能正确的提出中文部分。

2、原文: 法规名称:'《中华人民共和国合同法》',Items:[{法条名称:'第五十二条'

匹配成: 《中华人民共和国合同法》第五十二条

(?<=法规名称:\').*?(\',Items:[{法条名称:\').*?(?=\') 请问这样匹配哪里错了?Python报sre_constants.error: 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 。