import string
infile='filename.pdf'
outfile='newfile.pdf'
with open(infile,'r') as f:
text=f.read()
def using_translate():
start_chars=''.join(chr(n) for n in range(256) if not chr(n).isspace())
end_chars=''.join(chr((ord(c)+2)%256) for c in start_chars)
table = string.maketrans(start_chars,end_chars)
return text.translate(table)
def using_for_c_in_text():
return ''.join(chr((ord(c) + 2)%256) if not c.isspace() else c for c in text)
你的另一个问题表明你可能正在翻译一个很长的字符串(PDF文件)。在这种情况下,使用string
translate
方法比在字符串上逐字符循环更快:在测试.py公司名称:
这将显示使用1M pdf文件运行的时间的结果:
^{pr2}$注:很多答案(包括我的答案)都使用了
chr(ord(c) + 2)
。如果ord(c)+2>=256
,则抛出一个TypeError。为了避免类型错误,可以使用chr((ord(c) + 2)%256)
。在您只需检查字符是否为字母数字,否则保留原始字符:
请注意,将此应用于某些字符(如“y”、“z”、“9”、“0”等)可能不会产生预期的结果。一、 e.,'y'不会变成'a',而是'{'。在
相关问题 更多 >
编程相关推荐