转义序列是如何影响字符串长度的计算结果的?
转义序列对Python字符串长度统计的影响
Python的len()函数统计的是字符串实际存储的独立Unicode字符数量,不会按源码里的字面写法统计字符数。
你遇到的两个现象原因分别如下:
字符串长度为6而非5的原因
你定义的a = "\nHello"中,\n是标准的转义序列:它在源码里虽然写了反斜杠、n两个字面字符,但Python解释器会把它解析成1个单独的换行符,属于单个Unicode字符。后续的Hello是5个普通字符,总长度为1 + 5 = 6,所以len(a)返回6是符合设计逻辑的。没有输出换行的原因
你的代码里只执行了print(len(a)),打印的是长度计算结果6,并没有打印变量a本身,自然不会输出a里存储的换行符。如果要实现先输出换行再打印长度的效果,修改代码如下即可:
a = "\nHello" print(a) # 先打印字符串本身,会输出换行+Hello print(len(a)) # 再打印长度
其他常见转义序列的长度统计规则也遵循同样逻辑:
\t制表符:占1个字符长度\\反斜杠本身:占1个字符长度\uXXXX格式的Unicode转义字符:无论后面跟几位数字,最终都只算1个字符长度
小提示:如果你想要源码里的反斜杠不被识别为转义前缀,可以在字符串前加
r标记为原始字符串,比如r"\nHello"的长度就是7,此时\和n会被识别为两个独立的普通字符。
内容的提问来源于stack exchange,提问作者Elmo
相关产品推荐
相关产品推荐

