这个小程序能快点吗?有了elif,理解力就失控了,但也许我没有用正确的方法去尝试。你知道吗
def cleanup(s):
strng = ''
good = ['\t', '\r', '\n']
for char in s:
if unicodedata.category(char)[0]!="C":
strng += char
elif char in good:
strng += char
elif char not in good:
strng += ' '
return strng
Tags:
如果我理解正确,您希望将所有Unicode控制字符转换为空格,除了选项卡、回车和新行。您可以使用^{} 来实现:
如果我正确理解了您的任务,您希望用空格替换所有unicode控制字符,除了
\t
、\n
和\r
。你知道吗下面介绍如何使用正则表达式而不是循环更有效地实现这一点。你知道吗
通过操纵组成
control_chars
变量的范围,可以控制要包含或排除哪些字符。请参阅List of Unicode characters。你知道吗编辑:计时结果。
出于好奇,我做了一些计时测试,看看目前的三种方法中哪一种最快。你知道吗
我做了三个方法,名为
cleanup_op(s)
,它是OP代码的副本;cleanup_loop(s)
,这是Cristian Ciupitu的答案;cleanup_regex(s)
,这是我的代码。你知道吗以下是我运行的内容:
结果是:
清理工作在大约1.1秒内完成
清理循环在大约0.02秒内完成
清理正则表达式在大约0.004秒内完成
因此,任何一个答案都是对原始代码的显著改进。我认为@CristianCiupitu给出了一个更优雅和python的答案,而regex的速度更快。你知道吗
相关问题 更多 >
编程相关推荐