私は数GBのデータを別のXMLファイルにエンコードしています。いくつかの理由から、これらのxmlファイルを生成する(クローズドソース)プログラムは、テキストをURLのような表現でエンコードします。 '08.06.2016 22:41:35'
は08%2E06%2E2016%2022%3A41%3A35
URLのような文字列をもっと早くデコードしてください
です。興味のあるデータには大部分がスペース、小数点、コロンがありますが、コードを任意の種類の16進表記にしておく必要があります。
今のところ私はurllib.parse.unquote
を使用しています。しかし、非常に遅いです:プロファイラを使用して私のデータマイニングアルゴリズムで費やされた時間の90%がurllib.parse.unquote
に起因することがわかりました。あなたはそれが交換と比較する方法を以下に見ることができます。
from urllib.parse import unquote
from time import clock
t0=clock()
for i in range(10000):
unquote('08%2E06%2E2016')
t1=clock()
t2=clock()
for i in range(10000):
'08%2E06%2E2016'.replace('%2E','\x2E')
t3=clock()
print('unquote time: ',t1-t0,'\nreplace time: ',t3-t2)
にunquote時間:0.12173581222984353
時間置き換える:0.009713842143412421
を私はチェーンに私が交換すると知っているが、私はまだ何かを欠場する怖いすべての六角を試みることができます。 re.sub
などを使用しようとしましたが、私は失敗しました。 '%'を '\ x'で置き換えるのはそれほど簡単ではありません。
私は、Python 3.5を使用してい
私の質問は、それを2で割ったものです。より良い答えが出てこない場合、私はそれを「答え」にアップグレードします。おかげで、すでに良い結果になっています:) – Wli
processusを高速化するには、抽出したい行ごとにunquote_to_bytesをXML全体に対して一度実行する方が良いでしょう。 – Wli