擅长:python、mysql、java
<p>你的另一个问题表明你可能正在翻译一个很长的字符串(PDF文件)。在这种情况下,使用string<code>translate</code>方法比在字符串上逐字符循环更快:</p>
<p>在测试.py公司名称:</p>
<pre><code>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)
</code></pre>
<p>这将显示使用1M pdf文件运行的时间的结果:</p>
^{pr2}$
<p>注:很多答案(包括我的答案)都使用了<code>chr(ord(c) + 2)</code>。如果<code>ord(c)+2>=256</code>,则抛出一个TypeError。为了避免类型错误,可以使用<code>chr((ord(c) + 2)%256)</code>。在</p>