0

私は何十万ものhtmlファイルを評価しています。ファイルの特定の部分を探しています。ファイルの作成方法には多少の違いがある場合があります

たとえば、あるファイルにセクション見出しを含めることができます (上部に変換して分割し、テキストを結合して、一貫性のない空白を取り除くことができます。

u'KEY1A\x97RISKFACTORS'

別のファイルでは、次のことができます。

'KEY1ARISKFACTORS'

可能な応答の辞書を作成しようとしています。これら 2 つを比較して、等しいと結論付けたいと思います。しかし、最初の文字列を実行して '\97 を削除しようとするすべての置換は機能しないようです

エンティティのさまざまな表現を持つキーにはかなりの数のバリエーションがあるため、多かれ少なかれ自動的に辞書を作成したいので、次のようなものがあります。

key_dict={'u'KEY1A\x97RISKFACTORS':''KEY1ARISKFACTORS',''KEY1ARISKFACTORS':'KEY1ARISKFACTORS',. . .}

私が実行したときからそれを想定しています

S1='A'
S2=u'A'
S1==S2

私は得る

True

HTMLエンティティが処理されたら、これらを比較できるはずです

私が具体的にやろうとしたことは、

new_string=u'KEY1A\x97RISKFACTORS'.replace('|','')

エラーが発生しました

すみません、私は昨夜からこれにいます。SLott が何かを指摘し、間違ったラベルを使用したようです。これがより理にかなっていることを願っています

4

2 に答える 2

2

S1='A' かつ S2 = u'A' の場合、S1 == S2 であることは間違いありません。ただし、これを想定する代わりに、簡単なテストを行うことができます。

key_dict= {u'A':'Value1',
        'A':'Value2'}

print key_dict
print u'A' == 'A'

これは以下を出力します:

{u'A': 'Value2'}
True

それは解決しました、見てみましょう:

new_string=u'KEY1A\x97DEMOGRAPHICRESPONSES'.replace('|','')

ここに問題があります。\x97 は、ターゲット文字列で置き換えようとしている値です。ただし、検索文字列は '|' で、これは 16 進値 0x7C (ASCII および Unicode) であり、明らかに置換する必要のある値ではありません。ターゲットと検索文字列が両方とも ASCII または Unicode の場合でも、'\x97' は見つかりません。2 番目の問題は、Unicode 文字列で非 Unicode 文字列を検索しようとしていることです。最も簡単な解決策は、u'\x97' を検索することです。

print u'KEY1A\x97DEMOGRAPHICRESPONSES'
print u'KEY1A\x97DEMOGRAPHICRESPONSES'.replace(u'\x97', u'')

出力:

KEY1A\x97DEMOGRAPHICRESPONSES
KEY1ADEMOGRAPHICRESPONSES
于 2010-08-21T23:54:45.423 に答える
1

なぜ明らかではないの.replace(u'\x97','')ですか?その考えはどこ'|'から来たのですか?

>>> s = u'KEY1A\x97DEMOGRAPHICRESPONSES'
>>> s.replace(u'\x97', '')
u'KEY1ADEMOGRAPHICRESPONSES'
于 2010-08-21T23:26:54.680 に答える