Python两个相同的字符串被视为不同

发布于 2021-01-29 14:10:13

我有两个字符串,它们看起来都一样:

x1 = 'N C Soft - NCSOFT_Guild Wars 2 December 2013 :: BNLX_AD_Parallax_160x600'
x2 = 'N C Soft - NCSOFT_Guild Wars 2 December 2013 :: BNLX_CT_Parallax_160X600'

但是,检查相等性表明它们不是。

In [312]: if x1 != x2:
   .....:     print 'yep'
   .....:
yep

我还尝试从命令提示符中复制两个字符串,并将它们作为新变量粘贴回去,但是它们仍然不相等。我有80%的把握是因为它们的编码方式很怪异,插入了一些我看不见的奇数字符,但是使用type()都只是显示为字符串。

有什么办法可以看到“真实”字符串?任何帮助表示赞赏。

关注者
0
被浏览
365
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

    他们是不一样的;
    usingdifflib.ndiff()显示了这两个值之间的差异非常明显:

    >>> import difflib
    >>> print '\n'.join(difflib.ndiff([x1], [x2]))
    - N C Soft - NCSOFT_Guild Wars 2 December 2013 :: BNLX_AD_Parallax_160x600
    ?                                                      ^^             ^
    
    + N C Soft - NCSOFT_Guild Wars 2 December 2013 :: BNLX_CT_Parallax_160X600
    ?                                                      ^^             ^
    

    通常,如有疑问,可使用它repr()来查看表示形式。Python
    2将对字符串中的任何不可打印或非ASCII字符使用转义符,任何“有趣”字符都将像拇指一样突出。在Python
    3中,使用该ascii()函数可获得相同的结果,因为repr()保守性较低,Unicode的字符组合乍一看也很丰富。

    对于仍然看不到两者之间有什么变化的字符串,上述difflib工具也可以帮助指出确切的变化。



知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看