Kri*_*ris 2 python utf-8 python-2.7
如何在Python中获取UTF-8中所有空格的列表?包括不间断的空间等我正在使用python 2.7.
unicodedata.category会告诉你任何给定角色的类别代码; 你想要的人物有代码Zs.似乎没有任何方法可以提取类别中的字符列表,除非迭代所有字符:
>>> for c in xrange(sys.maxunicode+1):
... u = unichr(c)
... if unicodedata.category(u) == 'Zs':
... sys.stdout.write("U+{:04X} {}\n".format(c, unicodedata.name(u)))
...
U+0020 SPACE
U+00A0 NO-BREAK SPACE
U+1680 OGHAM SPACE MARK
U+180E MONGOLIAN VOWEL SEPARATOR
U+2000 EN QUAD
U+2001 EM QUAD
U+2002 EN SPACE
U+2003 EM SPACE
U+2004 THREE-PER-EM SPACE
U+2005 FOUR-PER-EM SPACE
U+2006 SIX-PER-EM SPACE
U+2007 FIGURE SPACE
U+2008 PUNCTUATION SPACE
U+2009 THIN SPACE
U+200A HAIR SPACE
U+202F NARROW NO-BREAK SPACE
U+205F MEDIUM MATHEMATICAL SPACE
U+3000 IDEOGRAPHIC SPACE
Run Code Online (Sandbox Code Playgroud)
您可能还需要包括类别Zl和Zp,这将增加
U+2028 LINE SEPARATOR
U+2029 PARAGRAPH SEPARATOR
Run Code Online (Sandbox Code Playgroud)
而且你几乎肯定想要包含通常被认为是空白的所有ASCII控制字符 - 由于历史原因(我推测),这些都属于类别Cc.
U+0009 CHARACTER TABULATION ('\t')
U+000A LINE FEED (LF) ('\n')
U+000B LINE TABULATION ('\v')
U+000C FORM FEED (FF) ('\r')
U+000D CARRIAGE RETURN (CR) ('\f')
Run Code Online (Sandbox Code Playgroud)
其他60多Cc字符应该不被视为空白,即使他们的官方名称听起来好像他们是空白.例如,U+0085 NEXT LINE几乎从未在野外遇到其官方意义; 它更有可能是从Windows-1252到UTF-8的错误转换的结果U+2026 HORIZONTAL ELLIPSIS.
一个密切相关的问题是" \sPython正则表达式中匹配的是什么?" 同样,回答这个问题的最佳方法是迭代所有字符:
>>> s = re.compile(ru"^\s$", re.UNICODE)
>>> for c in range(sys.maxunicode+1):
... u = unichr(c)
... if s.match(u):
... sys.stdout.write("U+{:04X} {}\n".format(
... c, unicodedata.name(u, "<name missing>")))
U+0009 <name missing>
U+000A <name missing>
U+000B <name missing>
U+000C <name missing>
U+000D <name missing>
U+001C <name missing>
U+001D <name missing>
U+001E <name missing>
U+001F <name missing>
U+0020 SPACE
U+0085 <name missing>
U+00A0 NO-BREAK SPACE
U+1680 OGHAM SPACE MARK
U+2000 EN QUAD
U+2001 EM QUAD
U+2002 EN SPACE
U+2003 EM SPACE
U+2004 THREE-PER-EM SPACE
U+2005 FOUR-PER-EM SPACE
U+2006 SIX-PER-EM SPACE
U+2007 FIGURE SPACE
U+2008 PUNCTUATION SPACE
U+2009 THIN SPACE
U+200A HAIR SPACE
U+2028 LINE SEPARATOR
U+2029 PARAGRAPH SEPARATOR
U+202F NARROW NO-BREAK SPACE
U+205F MEDIUM MATHEMATICAL SPACE
U+3000 IDEOGRAPHIC SPACE
Run Code Online (Sandbox Code Playgroud)
(我不知道为什么unicodedata.name不知道控制字符的名字.)
这是所有的Z*人物,所有的Cc那些被普遍认为是空白字符和五个多余的字符不是普遍认为是空白,U + 001C,U + 001D,U + 001E,U + 001F和U 0085.包含最后一组是一个错误,但是一个很大程度上无害的错误,因为将这些字符用于任何事情也是一个错误.
| 归档时间: |
|
| 查看次数: |
3100 次 |
| 最近记录: |