[英]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.