1. ホーム
  2. python

[解決済み] Pythonの文字列は[u'String]と表示されます。

2022-03-03 23:21:54

質問

これはきっと簡単なことなんだろうけど、本当に困っているんだ。

ウェブページを読み込むスクリプトがあるのですが、そのスクリプトは 美しいスープ を使用して解析します。からは スープ 最終的な目的はlink.contentsを出力することなので、すべてのリンクを抽出します。

私がパースしているテキストはすべてASCIIです。Pythonが文字列をユニコードとして扱うことは知っていますし、これは非常に便利だと思いますが、私の小さなスクリプトでは役に立ちません。

String'を保持する変数を出力しようとするたびに、次のようなメッセージが表示されます。 [u'String'] が画面に出力されます。これをただのアスキーに戻す簡単な方法はありますか、それとも正規表現を書いて取り除くべきですか?

どのように解決するのですか?

[u'ABC'] は、ユニコード文字列の1要素リストとなります。 Beautiful Soupは常にUnicodeを生成する . ですから、リストを1つのユニコード文字列に変換し、それをASCIIに変換する必要があります。

コンテンツ・メンバーは文字列とタグのリストですが、どうやらあなたが持っているものとは違うようです。本当に常に1つの要素を持つリストが得られると仮定して、あなたのテストが本当に だけ ASCIIの場合は、こうなります。

 soup[0].encode("ascii")

ただし、データが本当にASCIIであるかは再確認してください。これはかなり稀なことです。latin-1かutf-8である可能性が高いです。

 soup[0].encode("latin-1")


 soup[0].encode("utf-8")

あるいは、Beautiful Soupに元のエンコーディングが何だったか聞いて、このエンコーディングで返してもらう。

 soup[0].encode(soup.originalEncoding)