私は夢中になっている単純な問題があります。これは、Pythonの取り扱いのためです。unicode
文字です。python:regexを使って普通の文字をユニコードに置き換えるre
私は(http://www.jwe.cc/downloads/table.texと非常によく似ています)私のディスク上に格納されlatex
テーブルを持っている、と私はハイフン-
(\u2212
)はエンダッシュ–
(alt 0150
または\u2013
)に置き換えられるように、その上にいくつかの正規表現を適用したい
私は2つの異なる正規表現と置換を実行する次の関数を使用しています。
import re
import glob
def mychanger(fileName):
with open(fileName,'r') as file:
str = file.read()
str = str.decode("utf-8")
str = re.sub(r"((?:^|[^{])\d+)\u2212(\d+[^}])","\\1\u2013\\2", str).encode("utf-8")
str = re.sub(r"(^|[^0-9])\u2212(\d+)","\\1\u2013\\2", str).encode("utf-8")
with open(fileName,'wb') as file:
file.write(str)
myfile = glob.glob("C://*.tex")
for file in myfile: mychanger(file)
残念ながら、これは何も変わりません。
\u2013
の代わりに$
のようなユニコード以外の文字を使用すると、動作しますが、これは正規表現コードが正しいことを意味します。
私はここで迷っていますが、re.sub(ur"((?:^|[^{])\d+)\u2212(\d+[^}])","\\1\u2013\\2", str).encode("utf-8")
を使ってみましたが、それでも何も変わりません。
ここで何が間違っていますか?ありがとう!
てみてくださいを参照してください。 'uは "\\ 1 \ u2013 \\ 2"'cᴏʟᴅsᴘᴇᴇᴅ感謝@ –
は私がcᴏʟᴅsᴘᴇᴇᴅ@できるだけ早く –
を試してみましょう'TypeError:Unicodeに強制する:必要な文字列またはバッファ、リストが見つかりました' –