一道小题,用Python将字符串里的英文双引号转换成中文双引号
要求:高效算法
输入参数:基本原则"这"是一个"测试用例",完毕
结果:基本原则“这”是一个“测试用例”,完毕
以下来自: https://gist.github.com/1350419
要求:高效算法
输入参数:基本原则"这"是一个"测试用例",完毕
结果:基本原则“这”是一个“测试用例”,完毕
以下来自: https://gist.github.com/1350419
#!/usr/bin/env python # -*- coding: utf-8 -*- ''' Author: Feather FileName: chnquote.py Date: 11-09-2011 Description: 中文引号处理转换 ''' import operator import itertools def convert(sent): def double_quote_gen(): yield u"" while 1: yield u"“" yield u"”" assert isinstance(sent, unicode) seg = sent.split('"') if len(seg) % 2 != 1: raise RuntimeError('non-balenced quotes!') newseg = reduce(tuple.__add__, zip(double_quote_gen(), seg )) newsent = reduce(unicode.__add__, newseg) return newsent def test(msg): print "msg =>", msg print "convert(msg) =>", convert(msg) if __name__ == '__main__': test( u'基本原则"这"是一个"测试用例"' ) # test( u'测试, "这是"一"个"错误测试用例"') test( u'""""""""""""')
#---------------------------------------------------------------------------------------------------
又一答案:
来自Techparty-Python群:
-猪之哀伤- 12:53:24
>>> import itertools >>> obj = itertools.cycle(['“','”']) >>> _obj = lambda x: obj.next() >>> import re >>> before = '''基本原则"这"是一个"测试用例",完毕''' >>> print re.sub(r"['\"]", _obj, before) 基本原则“这”是一个“测试用例”,完毕
该博客介绍了如何使用Python高效地将字符串中的英文双引号转换为中文双引号。通过示例代码展示了两种不同的解决方案,一种利用reduce和zip函数,另一种使用itertools.cycle和正则表达式替换。
1260

被折叠的 条评论
为什么被折叠?



