51

箇条書きリストのため、"•" のような記号を持つ箇条書きのある HTML Web ページを読んで取得した文字列があります。テキストは、Python 2.7 の を使用した Web ページの HTML ソースであることに注意してくださいurllib2.read(webaddress)

箇条書き文字のユニコード文字は として知ってU+2022いますが、実際にそのユニコード文字を別のものに置き換えるにはどうすればよいですか?

やってみた str.replace("•", "something")

しかし、うまくいかないようです...どうすればいいですか?

4

6 に答える 6

77
  1. 文字列をUnicodeにデコードします。UTF-8でエンコードされていると仮定します。

    str.decode("utf-8")
    
  2. メソッドを呼び出し、replace最初の引数として必ずUnicode文字列を渡します。

    str.decode("utf-8").replace(u"\u2022", "*")
    
  3. 必要に応じて、UTF-8にエンコードし直します。

    str.decode("utf-8").replace(u"\u2022", "*").encode("utf-8")
    

(幸い、Python 3はこの混乱を防ぎます。ステップ3は、実際にはI / Oの直前にのみ実行する必要があります。また、文字列を呼び出すとstr、組み込み型がシャドウされることに注意してくださいstr。)

于 2012-10-26T20:23:18.247 に答える
13

文字列をUnicodeとしてエンコードします。

>>> special = u"\u2022"
>>> abc = u'ABC•def'
>>> abc.replace(special,'X')
u'ABCXdef'
于 2012-10-26T20:24:25.157 に答える
3
import re
regex = re.compile("u'2022'",re.UNICODE)
newstring = re.sub(regex, something, yourstring, <optional flags>)
于 2012-10-26T20:16:42.473 に答える