【问题标题】:Unable to find a character in a string?无法在字符串中找到字符?
【发布时间】:2016-12-20 10:05:16
【问题描述】:

我从不同的维基百科页面获取数据。首先,此数据存储在本地位置(以 python pickle 的形式)。代码如下:

    k = '9–10000000'

    if '-' in k:
        print('Found')
if 语句中的

'-' 字符是从键盘键入的,而 print 语句没有显示任何内容。但是,如果我从 k 值复制“-”,它会显示所需的输出(正在打印“找到”)。我不知道这两个 '-' 字符有什么不同。

这是最简单的例子,我可以在这里分享。还有多个其他字符显示相同的结果?

任何想法,为什么?????

【问题讨论】:

  • 字符串中的那个字符不是普通的破折号-,而是unicode (unicode-table.com/en/2013)
  • 谢谢。就是那个破折号。

标签: python parsing beautifulsoup


【解决方案1】:

可能是因为您键入的字符是“连字符”,而 k 中的字符是“破折号”(不同的字符代码,但肉眼看起来都一样)

【讨论】:

  • 谢谢。这绝对是问题所在。
【解决方案2】:

尝试运行你修改后的程序,你会发现两个字符,和你想象的相反,不一样。

k = '9–10000000'  # first dash
print(ord('–'))   # printing first dash
print(ord('-'))   # printing second dash
if '-' in k:      # second dash
    print('Found')

其中ord() 给出了 UNICODE 编码中字符的数字表示。

打印出来

8211   
45     

8211 代表 EN-DASH

45 代表连字符减号

如果您想了解更多信息,请查看以下内容: http://www.fileformat.info/info/unicode/char/2013/index.htm http://www.fileformat.info/info/unicode/char/2d/index.htm

【讨论】:

    猜你喜欢
    • 2021-01-08
    • 2013-03-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-11
    相关资源
    最近更新 更多