python处理文本中的标点问题
有原文本a.txt存储有:,hongkong12345woai.haode2347iam234中国,好234中国人!。234我是中国人234编程实现删除所有带标点的行,得...
有原文本a.txt存储有:
, hong kong 1 2 3 4 5
wo ai . hao de 2 3 4 7
i am 2 3 4
中国 , 好 2 3 4
中国人 ! 。 2 3 4
我是 中国人 2 3 4
编程实现删除所有带标点的行,得到新的文本为:b.txt
i am 2 3 4
我是 中国人 2 3 4 展开
, hong kong 1 2 3 4 5
wo ai . hao de 2 3 4 7
i am 2 3 4
中国 , 好 2 3 4
中国人 ! 。 2 3 4
我是 中国人 2 3 4
编程实现删除所有带标点的行,得到新的文本为:b.txt
i am 2 3 4
我是 中国人 2 3 4 展开
1个回答
展开全部
收集了所有的英文标点跟常用的中文标点来做判断. 目前程序输入的a.txt需要是utf8编码的, 如果你用的是其他编码格式, 把最后一行的utf8改成你自己用的编码格式应该就可以了.
#! coding: utf8
from __future__ import unicode_literals
import re
non_stops = (
'\uFF02\uFF03\uFF04\uFF05\uFF06\uFF07\uFF08\uFF09\uFF0A\uFF0B\uFF0C\uFF0D'
'\uFF0F\uFF1A\uFF1B\uFF1C\uFF1D\uFF1E\uFF20\uFF3B\uFF3C\uFF3D\uFF3E\uFF3F'
'\uFF40\uFF5B\uFF5C\uFF5D\uFF5E\uFF5F\uFF60'
'\uFF62\uFF63\uFF64'
'\u3000\u3001\u3003'
'\u300B\u300C\u300D\u300E\u300F\u3010\u3011'
'\u3014\u3015\u3016\u3017\u3018\u3019\u301A\u301B\u301C\u301D\u301E\u301F'
'\u3030'
'\u303E\u303F'
'\u2013\u2014'
'\u2018\u2019\u201B\u201C\u201D\u201E\u201F'
'\u2026\u2027'
'\uFE4F'
)
stops = (
'\uFF01'
'\uFF1F'
'\uFF61'
'\u3002'
)
punctuation = non_stops + stops
punctuation += '\u0021-\u002f\u003a-\u0040\u005b-\u0060\u007b-\u007e'
r = re.compile('[{}]'.format(punctuation))
fin = open('a.txt', 'rb')
fout = open('b.txt', 'wb')
[fout.write(e) for e in fin if not r.search(e.decode('utf8'))]
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询