我有一个字符串,我必须计算这个字符串中的所有元素。
str = 'rnrnrn rn xa0xa0rnIntroductionrnrnrnHellornrnWorldrnProblems...rnHow to calculate numbers...rnConclusionrnrnrnxa0rnrnHello world.'
这些元素包含数字、字母、转义序列、空白、逗号等。
有没有办法在Python中计算这类字符串中的所有元素?
我知道len()
和count()
帮不上忙。我也尝试了一些regex方法,如re.findall(r'.', str)
,但它不能找到n
这样的元素,也只能找到r
而不能找到和
r
。
编辑:为了更清楚,我想将n
计数为2,而不是1,并且xa0
计数为4,而不是1。
在Python中是一个特殊字符,所以你必须像
str = '\r\n '
或str = r'rn '
那样转义它们。之后,len()
将视为独立字符。
Python将您的字符串文字编译为Python字符串,其中转义字符序列(如n
)将被替换为其等效的unicode字符(在本例中为unicode U-000A换行符)。len
将把这两个字符序列算作一个字符。
repr
表示又添加了转义序列。所以你可以取它的长度
>>> s = 'rnrnrn rn xa0xa0rnIntroductionrnrnrnHellornrnWorldrnProblems...rnHow to calculate numbers...rnConclusionrnrnrnxa0rnrnHello world.'
>>> print(len(s))
123
>>> print(len(repr(s)))
170
这不会100%准确,因为在字面值字符串中构造unicode字符的方法不止一种。例如,"n"
和"x0a"
都解码为相同的换行字符,并且无法知道它来自哪种形式。
或者,您可以使用"raw"不转义字符的字符串。因此,r"n"
的长度为2。