字符串不仅支持所有通用序列操作,还实现了很多附件方法。
我会以『字符串方法』为标题,分几篇笔记逐一介绍这些方法。
我会在这仓库中持续更新笔记:https://github.com/orca-j35/python_notes
Letter
在 General_Category Values 中列举了一般分类属性(general category property),其中关于 "Letter" 的部分如下:
Abbr | Long | Description |
---|---|---|
L | Letter | Lu | Ll | Lt | Lm | Lo |
LC | Cased_Letter | Lu | Ll | Lt |
Lu | Uppercase_Letter | an uppercase letter |
Ll | Lowercase_Letter | a lowercase letter |
Lt | Titlecase_Letter | a digraphic character, with first part uppercase |
Lm | Modifier_Letter | a modifier letter |
Lo | Other_Letter | other letters, including syllables and ideographs |
字符的第 3 的字段便是其一般分类属性(这里的字段是指 UnicodeData.txt 中每个码点后的字段),详见 General_Category。示例:
# 下面是拉丁小写字母'a'/'b'/'c'/'d'
0061;LATIN SMALL LETTER A;Ll;0;L;;;;;N;;;0041;;0041
0062;LATIN SMALL LETTER B;Ll;0;L;;;;;N;;;0042;;0042
0063;LATIN SMALL LETTER C;Ll;0;L;;;;;N;;;0043;;0043
0064;LATIN SMALL LETTER D;Ll;0;L;;;;;N;;;0044;;0044
"Alphabetic" 是一个枚举属性,由 Lowercase + Uppercase + Lt + Lm + Lo + Nl + Other_Alphabetic 构成 —— 欲了解 "Alphabetic " 的详细信息,可阅读 Property Table - Alphabetic。
可见,在标准 Unicode 中 "Alphabetic" 涵盖范围大于 "Letter"。
欲了解 Unicode 一般分类属性,可阅读:
- https://www.compart.com/en/unicode/category
- http://www.fileformat.info/info/unicode/category/index.htm
Nd
在 General_Category Values 中列举了一般分类属性,其中关于 "Number" 的部分如下:
Abbr | Long | Description |
---|---|---|
N | Number | Nd | Nl | No |
Nd | Decimal_Number | a decimal digit |
Nl | Letter_Number | a letterlike numeric character |
No | Other_Number | a numeric character of other type |
字符的第 3 的字段便是其一般分类属性(这里的字段是指 UnicodeData.txt 中每个码点后的字段),详见 General_Category。
如果需要查看 Nd 中的码点和抽象字符,可阅读 List of Unicode Characters of Category “Decimal Number”
Separator&Other
在 General_Category Values 中列举了一般分类属性(general category property),其中关于 "Separator" 和 "Other" 的部分如下:
Abbr | Long | Description |
---|---|---|
Zs | Space_Separator | a space character (of various non-zero widths) |
Zl | Line_Separator | U+2028 LINE SEPARATOR only |
Zp | Paragraph_Separator | U+2029 PARAGRAPH SEPARATOR only |
Z | Separator | Zs | Zl | Zp |
Cc | Control | a C0 or C1 control code |
Cf | Format | a format control character |
Cs | Surrogate | a surrogate code point |
Co | Private_Use | a private-use character |
Cn | Unassigned | a reserved unassigned code point or a noncharacter |
C | Other | Cc | Cf | Cs | Co | Cn |
Numeric_Type
Decimal、Digit、Numeric 三者的关系是:Decimal⊂Digit⊂Numeric
Decimal
如果字符的 Numeric_Type 属性等于 Decimal,那么该字符的 6、7、8 三个字段都会包含同一个数字(这里的字段是指 UnicodeData.txt 中每个码点后的字段),且该数字是位于 0~9 之间的某个值。也就是说 Numeric_Type=Decemal 的字符是指用于十进制计数系统的字符。详见 Numeric_Type。
Numeric_Type=Decemal 的示例,这些字符的 6、7、8 三个字段均包含同一个数字:

# 下面是常见的10进制数字
0030;DIGIT ZERO;Nd;0;EN;;0;0;0;N;;;;;
0031;DIGIT ONE;Nd;0;EN;;1;1;1;N;;;;;
0032;DIGIT TWO;Nd;0;EN;;2;2;2;N;;;;;
0033;DIGIT THREE;Nd;0;EN;;3;3;3;N;;;;;
0034;DIGIT FOUR;Nd;0;EN;;4;4;4;N;;;;;
0035;DIGIT FIVE;Nd;0;EN;;5;5;5;N;;;;;
0036;DIGIT SIX;Nd;0;EN;;6;6;6;N;;;;;
0037;DIGIT SEVEN;Nd;0;EN;;7;7;7;N;;;;;
0038;DIGIT EIGHT;Nd;0;EN;;8;8;8;N;;;;;
0039;DIGIT NINE;Nd;0;EN;;9;9;9;N;;;;;
# 下面是Kharoshthi语系中的数字
0660;ARABIC-INDIC DIGIT ZERO;Nd;0;AN;;0;0;0;N;;;;;
0661;ARABIC-INDIC DIGIT ONE;Nd;0;AN;;1;1;1;N;;;;;
0662;ARABIC-INDIC DIGIT TWO;Nd;0;AN;;2;2;2;N;;;;;
0663;ARABIC-INDIC DIGIT THREE;Nd;0;AN;;3;3;3;N;;;;;
0664;ARABIC-INDIC DIGIT FOUR;Nd;0;AN;;4;4;4;N;;;;;
0665;ARABIC-INDIC DIGIT FIVE;Nd;0;AN;;5;5;5;N;;;;;
0666;ARABIC-INDIC DIGIT SIX;Nd;0;AN;;6;6;6;N;;;;;
0667;ARABIC-INDIC DIGIT SEVEN;Nd;0;AN;;7;7;7;N;;;;;
0668;ARABIC-INDIC DIGIT EIGHT;Nd;0;AN;;8;8;8;N;;;;;
0669;ARABIC-INDIC DIGIT NINE;Nd;0;AN;;9;9;9;N;;;;;
Digit
如果字符的 Numeric_Type 属性等于 Digit,那么该字符的 7、8 两个字段会包含同一个数字,但字段 6 为空(这里的字段是指 UnicodeData.txt 中每个码点后的字段),且该数字是位于 0~9 之间的某个值。在 Decimal 的基础上包含需要特殊处理的数字(例如兼容性上标数字)。
从 Unicode 6.3.0 开始,不会给新编码的数字字符赋予 Numeric_Type=Digit,也不会将具备 Numeric_Type=Numeric 的现有字符字符改为 Numeric_Type=Digit,Digit 和 Numeric 之间的区别不再有实际意义。详见 Numeric_Type。
Numeric_Type=Digit 的示例,这些字符的 7、8 两个字段包含同一个数字,字段 6 为空:

# 下面是上标'⁸'和'⁹'
2078;SUPERSCRIPT EIGHT;No;0;EN;<super> 0038;;8;8;N;SUPERSCRIPT DIGIT EIGHT;;;;
2079;SUPERSCRIPT NINE;No;0;EN;<super> 0039;;9;9;N;SUPERSCRIPT DIGIT NINE;;;;
# 下面是下标'₀'和'₁'
2080;SUBSCRIPT ZERO;No;0;EN;<sub> 0030;;0;0;N;SUBSCRIPT DIGIT ZERO;;;;
2081;SUBSCRIPT ONE;No;0;EN;<sub> 0031;;1;1;N;SUBSCRIPT DIGIT ONE;;;;
Numeric
如果字符的 Numeric_Type 属性等于 Numeric,那个该字符的仅字段 8 会包含一个数值,字段 6、7 为空(这里的字段是指 UnicodeData.txt 中每个码点后的字段)。在 Digit 的基础上包含了正(负)整数或有理数——包括分数,例如 U+2155 表示分数 '⅕',详见 Numeric_Type。在 Unihan 中某些字符也具备此属性,见 Numeric_Type, Han。
Numeric_Type=Numeric 的示例,这些字符仅字段 8 会包含一个数值,字段 6、7 为空:

# 下面是一些分数
2150;VULGAR FRACTION ONE SEVENTH;No;0;ON;<fraction> 0031 2044 0037;;;1/7;N;;;;;
2151;VULGAR FRACTION ONE NINTH;No;0;ON;<fraction> 0031 2044 0039;;;1/9;N;;;;;
2152;VULGAR FRACTION ONE TENTH;No;0;ON;<fraction> 0031 2044 0031 0030;;;1/10;N;;;;;
2153;VULGAR FRACTION ONE THIRD;No;0;ON;<fraction> 0031 2044 0033;;;1/3;N;FRACTION ONE THIRD;;;;
2154;VULGAR FRACTION TWO THIRDS;No;0;ON;<fraction> 0032 2044 0033;;;2/3;N;FRACTION TWO THIRDS;;;;
2155;VULGAR FRACTION ONE FIFTH;No;0;ON;<fraction> 0031 2044 0035;;;1/5;N;FRACTION ONE FIFTH;;;;
网友评论