一直都有这个问题的说,或许其实并没有自己想象的那么难处理的说;
对应的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 函数;这里可以直接使用。

Logo

CSDN联合极客时间,共同打造面向开发者的精品内容学习社区,助力成长!

更多推荐