python中文单字问题

本文介绍了一种在Python2和Python3中实现单字切分的方法,通过具体的代码示例展示了如何将一个包含中文字符的文件进行单字切割并保存到新的文件中。对于Python2和Python3的差异,如字符串编码和解码的处理进行了说明。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一直都有这个问题的说,或许其实并没有自己想象的那么难处理的说;
对应的python2 python3都有相应的解决办法。
已知有文件

明天天气

现在需要进行单字切分,得到文件

明
天
天
气

python2 与 python3 都有相应的解决办法,现在直接贴代码了

python2

#!/usr/bin/env python
#coding:utf-8


import os
import sys
import string
import re

class GetObject(object):
    def __init__(self, input_str, output_str):
        self.input_str = input_str
        self.output_str = output_str

    def Process(self):
        print('Process here')
        fp = open(self.input_str, 'rt')
        fp_out = open(self.output_str, 'wt')
        for line in fp.readlines():
            line = line.strip()
            for key in line.decode('utf-8'):
                fp_out.write('%s\n' % (key.encode('utf-8')))
        fp.close()
        fp_out.close()
        return

if __name__ == '__main__':
    if len(sys.argv) != 3:
        print('usage: %s input output' % (sys.argv[0]))
        sys.exit(-1)
    handle = GetObject(sys.argv[1], sys.argv[2])
    handle.Process()

对应的命令行是

python2 pysh/test_char.py test.txt test.txt.out

以上就是python2的。

python3

#!/usr/bin/env python
#coding:utf-8


import os
import sys
import string
import re

class GetObject(object):
    def __init__(self, input_str, output_str):
        self.input_str = input_str
        self.output_str = output_str

    def Process(self):
        print('Process here')
        fp = open(self.input_str, 'rt')
        fp_out = open(self.output_str, 'wt')
        for line in fp.readlines():
            line = line.strip()
            for key in line:
                fp_out.write('%s\n' % (key))
        fp.close()
        fp_out.close()
        return

if __name__ == '__main__':
    if len(sys.argv) != 3:
        print('usage: %s input output' % (sys.argv[0]))
        sys.exit(-1)
    handle = GetObject(sys.argv[1], sys.argv[2])
    handle.Process()

那么对应的命令行是

python3 pysh/test_char.py test.txt test.txt.out

python3中 str 没有 encode decode 函数;这里可以直接使用。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值