Python 3.x Jupyter笔记本中的精确字符串不匹配
我想做什么 我在读文件名,文件末尾有各种器官名称,有许多这样的文件使用glob.glob('filename/**/blabla')) 后来,我尝试使用IN运算符匹配文件名中存在的特定字符串。像 “blabla/blabla/blabla/blabla_肾上腺(左).NRRD”中的“肾上腺(左).NRRD” 它适用于具有相同结尾的其他文件名,但对少数文件名不起作用。 为了调试,我试图匹配两个文件的相同文件名结尾在编程上是否相同,但它们不是!!!为什么? 对于调试,我尝试将字符串与字符串匹配。如下图所示。但在比较python中的字符串时,我看到了一件奇怪的事情。 有人能告诉我这里有什么不同吗 ** '肾上腺(左)。NRRD'='阿肾上腺(左)。NRRD'=>错误 ** 我把它降到这一部分,“A”不匹配,而其他匹配正确Python 3.x Jupyter笔记本中的精确字符串不匹配,python-3.x,jupyter-notebook,Python 3.x,Jupyter Notebook,我想做什么 我在读文件名,文件末尾有各种器官名称,有许多这样的文件使用glob.glob('filename/**/blabla')) 后来,我尝试使用IN运算符匹配文件名中存在的特定字符串。像 “blabla/blabla/blabla/blabla_肾上腺(左).NRRD”中的“肾上腺(左).NRRD” 它适用于具有相同结尾的其他文件名,但对少数文件名不起作用。 为了调试,我试图匹配两个文件的相同文件名结尾在编程上是否相同,但它们不是!!!为什么? 对于调试,我尝试将字符串与字符串匹配。如下
正如@canbax所提到的,我检查了这两个字符的下划线ASCII值,发现它们不同。其中一个给出了65(英文字母“A”的标准ASCII码),而另一个给出了1040 您可以使用
ord()
获取字符的ASCII int值
尽管int值不同,但在视觉上它们看起来是相同的,这可能是jupyter笔记本电脑方面的问题
最终解决方案:
将文件中的花式A替换为普通A。
正如@canbax提到的,我检查了两个字符的下划线ASCII值,发现它们不同。其中一个给出了65(英文字母“A”的标准ASCII码),而另一个给出了1040
您可以使用ord()
获取字符的ASCII int值
尽管int值不同,但在视觉上它们看起来是相同的,这可能是jupyter笔记本电脑方面的问题
最终解决方案:
将文件中的花式A替换为普通A。
您确定它们仅为1个字符吗。也许有spaces@canbax是的,我仔细检查过了。没有空格或其他内容。请尝试复制粘贴“A”,并使用ord()
函数检查int
值。也许他们不一样characters@canbax,是的,你是对的,一个给出了65,A的通常ASCII码,而另一个给出了1040。但是,如果这是其他文学剧本中的一个特殊角色,它看起来有什么相同之处呢?Jupyter笔记本会向你展示这些角色。你可以向他们报告一个bug。我不知道是怎么发生的。你确定他们只是一个角色吗。也许有spaces@canbax是的,我仔细检查过了。没有空格或其他内容。请尝试复制粘贴“A”,并使用ord()
函数检查int
值。也许他们不一样characters@canbax,是的,你是对的,一个给出了65,A的通常ASCII码,而另一个给出了1040。但是,如果这是其他文学剧本中的一个特殊角色,它看起来有什么相同之处呢?Jupyter笔记本会向你展示这些角色。你可以向他们报告一个bug。我不知道它是怎么发生的。@canbax回答它,我可以让你的答案成为被接受的答案。我认为这只是一个评论,可以解决这个问题,不需要回答。所以我回答了。继续,贴一个答案。不,谢谢。我想要我应得的选票。这只是个玩笑;)@如果你能回答,我就能让你的答案成为公认的答案。我认为这只是一个评论,可以解决这个问题,不需要回答。所以我回答了。继续,贴一个答案。不,谢谢。我想要我应得的选票。这只是个玩笑;)