字符串中的字符数(转义序列)

时间:2020-07-21 03:49:50

标签: python

我编写了这段代码来计算字符串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 有人可以解释吗?预先感谢。

4 个答案:

答案 0 :(得分:2)

字符串中包含6个字符:

  1. a
  2. \n,解析为单个“换行符”(也称为“换行符”)
  3. b
  4. \x1f,这是一个十六进制转义序列。 \x表示后面的两个字符(十六进制)将组成一个数字(在这种情况下为1f-> 31),并使用其代码为该数字的字符。字符号31恰好是ASCII控制字符,称为“单元分隔符”。
  5. \000是一个八进制转义序列,与上面的相同,但以8为底。在这种情况下,它引用的代码为0,它是空字符
  6. 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)
相关问题