问题描述:
从一个txt文件中提取所有中文
思路:
- 打开txt文件
- 读取txt文件中的文本
- 用正则匹配获取中文
- 将其内容写入到另一个文本中
python实现:
代码
#
coding=utf-8
import imp
import sys
imp.reload(sys)
sys.setdefaultencoding( ' utf-8 ' ) # 设置默认编码,只能是utf-8,下面\u4e00-\u9fa5要求的
import re
pchinese = re.compile( ' ([\u4e00-\u9fa5]+)+? ' ) # 判断是否为中文的正则表达式
f = open( " data.txt " ) # 打开要提取的文件
fw = open( " getdata.txt " , " w " ) # 打开要写入的文件
for line in f.readlines(): # 循环读取要读取文件的每一行
m = pchinese.findall(str(line)) # 使用正则表达获取中文
if m:
str1 = ' | ' .join(m) # 同行的中文用竖杠区分
str2 = str(str1)
fw.write(str2) # 写入文件
fw.write( " \n " ) # 不同行的要换行
f.close()
fw.close() # 打开的文件记得关闭哦!
import imp
import sys
imp.reload(sys)
sys.setdefaultencoding( ' utf-8 ' ) # 设置默认编码,只能是utf-8,下面\u4e00-\u9fa5要求的
import re
pchinese = re.compile( ' ([\u4e00-\u9fa5]+)+? ' ) # 判断是否为中文的正则表达式
f = open( " data.txt " ) # 打开要提取的文件
fw = open( " getdata.txt " , " w " ) # 打开要写入的文件
for line in f.readlines(): # 循环读取要读取文件的每一行
m = pchinese.findall(str(line)) # 使用正则表达获取中文
if m:
str1 = ' | ' .join(m) # 同行的中文用竖杠区分
str2 = str(str1)
fw.write(str2) # 写入文件
fw.write( " \n " ) # 不同行的要换行
f.close()
fw.close() # 打开的文件记得关闭哦!
要点:
- 文件的读写 open(filename,type),file.close()
-
正则表达式使用
re 模块是正则表达式的Python实现。它有一个漂亮的函数findall(),接受一个正则表达式和一个字符串作为参数,然后找出字符串中出现该模式的所有地方。在这个例子里,模式匹配的是数字序列。findall()函数返回所有匹配该模式的子字符串的列表。
- 字符串拼接 '|'.join(strabc),在strabc字符串后面添加|。