Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/325.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python将两个相同的字符串视为不同的字符串_Python_String_Python 2.7 - Fatal编程技术网

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

Python将两个相同的字符串视为不同的字符串,python,string,python-2.7,Python,String,Python 2.7,我有两个字符串,从所有迹象来看都是相同的: 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'

我有两个字符串,从所有迹象来看都是相同的:

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()时,两者都显示为字符串


有没有办法让我看到“真实”的字符串?感谢您的帮助。

它们不一样;使用将非常清楚地显示这两个值的差异:

>>> 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
?                                                      ^^             ^
一般来说,当有疑问时,使用查看表示。Python2将对字符串中的任何不可打印或非ASCII字符使用转义符,任何“有趣”字符都会像拇指疼痛一样突出。在Python3中,使用与
repr()
相同的结果比较保守,Unicode中充斥着乍一看都一样的字符组合


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

注释在跳过空格方面效果不太好,但是repr()看起来也完全相同啊,你完全正确——我在这里肯定提供了错误的示例。但这个问题仍然存在——让我找一个真实的例子。@DavidYang:Python不会骗你的。查看
repr()
输出并比较这些值;像不间断空格这样的差异更为明显。@DavidYang:更新为使用
difflib.ndiff
来显示精确的差异。一开始我还忽略了另一个区别,我明白了,我不认为python在撒谎,我只是认为它没有向我展示所有东西。找到两个看起来相同但不相同的字符串已经被证明是相当困难的,因为我不能准确地搜索它。但我能说的是,试图在两个列表之间找到公共字符串不会产生任何结果,但我100%肯定这两个列表有交点,因为一个列表是从另一个列表创建的。嗯,Martijn,我相信第二个差异是造成这一点的真正原因!不知何故,当我用第一个列表创建第二个列表时,它不区分大小写,但现在我正在比较它们,区分大小写很重要!