我编写了这段代码来计算字符串a\nb\x1f\000d
中的字符数
#CLASS TASK-VI
ctr=0
str1="a\nb\x1f\000d"
for i in range(len(str1)):
ctr=ctr+1
print("Number of characters in the string str1 is: ",ctr)
它返回Number of characters in the string str1 is: 6
有人可以解释吗?预先感谢。
答案 0 :(得分:2)
字符串中包含6个字符:
a
\n
,解析为单个“换行符”(也称为“换行符”)b
\x1f
,这是一个十六进制转义序列。 \x
表示后面的两个字符(十六进制)将组成一个数字(在这种情况下为1f
-> 31
),并使用其代码为该数字的字符。字符号31恰好是ASCII控制字符,称为“单元分隔符”。\000
是一个八进制转义序列,与上面的相同,但以8为底。在这种情况下,它引用的代码为0
,它是空字符d
反斜杠是特殊的控制字符,可“转义”以下字符。某些“转义序列”具有特殊的效果-例如,在这里您可以看到\n
,\x
和\0
,但是如果您想查找它们的话还有很多。在python中,您可以将字符串声明为“原始字符串”,从而使字符串不处理转义序列,您可以通过以r"
而不是"
开头的字符串来实现:
>>> len("a\nb\x1f\000d")
6
>>> len(r"a\nb\x1f\000d")
13
您还可以使用双反斜杠\\
来转义反斜杠,从而防止 it 转义其他字符。
>>> len("a\\nb\\x1f\\000d")
13
答案 1 :(得分:2)
如果您希望将反斜杠算作字符,请使其成为双反斜杠,否则它们表示转义字符。
>>> str1 = "a\\nb\\x1f\\000d"
>>> len(str1)
13
答案 2 :(得分:1)
str1= "a\nb\x1f\000d"
print(f"Number of characters in the string str1 is {len(str1)}")
# 6
str1= r"a\nb\x1f\000d"
print(f"Number of characters in the string str1 is {len(str1)}")
#13
答案 3 :(得分:0)
如果您从python中获取字符串,则每个字符都将被视为字符串。 例如,制作一个名为“ content.txt” 的文件。在该文件内键入/粘贴任何想要的带有任何特殊字符的字符串,用python读取它,然后将其视为字符串。 即
with open("content.txt") as fl:
content = fl.read()
print(len(content))
print(content)