簡體   English   中英

如何將帶有實體ref的unicode字符串與非unicode字符串進行比較

[英]How to compare unicode strings with entity ref to non-unicode string

我正在評估數十萬個html文件。 我正在尋找文件的特定部分。 文件的創建方式可能會有細微的變化

例如,在一個文件中,我可以具有節標題(將其轉換為上半部分並拆分后再加入文本,以消除可能不一致的空白:

u'KEY1A\x97RISKFACTORS'

在另一個文件中,我可以有:

'KEY1ARISKFACTORS'

我正在嘗試創建一個可能的響應的字典,我想比較這兩者並得出結論,它們是相等的。 但是我嘗試運行第一個字符串以刪除'\\ 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指出了一些問題,我發現我使用了錯誤的標簽,希望這樣做更有意義

您是正確的,如果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是您要在目標字符串中替換的值。 但是,您的搜索字符串是“ |”,它是十六進制值0x7C(ascii和unicode),顯然不是您需要替換的值。 即使目標和搜索字符串都是ascii或unicode,您仍然找不到'\\ x97'。 第二個問題是您試圖在Unicode字符串中搜索非Unicode字符串。 最簡單,最有意義的解決方案是僅搜索u'\\ x97':

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

輸出:

KEY1A\x97DEMOGRAPHICRESPONSES
KEY1ADEMOGRAPHICRESPONSES

為什么不使用明顯的.replace(u'\\x97','') '|'的想法在哪里'|' 來自?

>>> s = u'KEY1A\x97DEMOGRAPHICRESPONSES'
>>> s.replace(u'\x97', '')
u'KEY1ADEMOGRAPHICRESPONSES'

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM