Python怎么获取字符串长度或字节数,需要用到什么函数

2021-04-29 10:15发布

7条回答
freediandianer
2楼 · 2021-04-29 18:06
  1. 可以用len

  2. >>> a='http://c.biancheng.net'

  3. >>> len(a)



我们可以通过使用 encode() 方法,将字符串进行编码后再获取它的字节数。

我是大脸猫
4楼 · 2021-04-30 09:20

Python 中,要想知道一个字符串有多少个字符(获得字符串长度),或者一个字符串占用多少个字节,可以使用 len 函数。

len 函数的基本语法格式为:

len(string)

其中 string 用于指定要进行长度统计的字符串。

例如,定义一个字符串,内容为“http://c.biancheng.net”,然后用 len() 函数计算该字符串的长度,执行代码如下:

>>> a='http://c.biancheng.net'
>>> len(a)
22


在实际开发中,除了常常要获取字符串的长度外,有时还要获取字符串的字节数。

在 Python 中,不同的字符所占的字节数不同,数字、英文字母、小数点、下划线以及空格,各占一个字节,而一个汉字可能占 2~4 个字节,具体占多少个,取决于采用的编码方式。例如,汉字在 GBK/GB2312 编码中占用 2 个字节,而在 UTF-8 编码中一般占用 3 个字节。

以 UTF-8 编码为例,字符串“人生苦短,我用Python”所占用的字节数如图 1 所示。



图 1 汉字和英文所占字节数


我们可以通过使用 encode() 方法,将字符串进行编码后再获取它的字节数。例如,采用 UTF-8 编码方式,计算“人生苦短,我用Python”的字节数,可以执行如下代码:

>>> str1 = "人生苦短,我用Python"
>>> len(str1.encode())
27

因为汉字加中文标点符号共 7 个,占 21 个字节,而英文字母和英文的标点符号占 6 个字节,一共占用 27 个字节。

同理,如果要获取采用 GBK 编码的字符串的长度,可以执行如下代码:

>>> str1 = "人生苦短,我用Python"
>>> len(str1.encode('gbk'))
20


嘿呦嘿呦拔萝卜
5楼 · 2021-04-30 18:28

我要用for循环,循环一个input的字符串的长度。答:name[1:-2:-2]表示从第2个字符(参数1)开始,往回(左)数每两个字符取一个(第三个参数-2),结束于倒数第三个字符(第二个参数-2),由于结束位置在开始位置的右边,所以得到一个空字符串 第一个参数表示开始位置,第二个表示结束位置,第三个标志步速


灰机带翅膀
6楼 · 2021-05-09 21:05

生成字符串变量


str='python String function'


字符串长度获取:len(str)


例:print '%s length=%d' % (str,len(str))


连接字符串


sStr1 = 'strcat'


sStr2 = 'append'


sStr1 += sStr2


print sStr1


复制字符串


#strcpy(sStr1,sStr2)


sStr1 = 'strcpy'


sStr2 = sStr1


sStr1 = 'strcpy2'


print sStr2


比较字符串


#strcmp(sStr1,sStr2)


sStr1 = 'strchr'


sStr2 = 'strch'


print cmp(sStr1,sStr2)


#注意cmp函数的输出结果和C语言的strcmp是一样的。还可以用 “aaa”==“bbb” 来比较字符串。


截取字符串


特别注意:下标从0开始;str[0:3]不包含下标为3的字符。


str = ’0123456789′


print str[0:3] #截取第一位到第三位的字符


print str[:] #截取字符串的全部字符


print str[6:] #截取第七个字符到结尾


print str[:-3] #截取从头开始到倒数第三个字符之前


print str[2] #截取第三个字符


print str[-1] #截取倒数第一个字符


print str[::-1] #创造一个与原字符串顺序相反的字符串


print str[-3:-1] #截取倒数第三位与倒数第一位之前的字符


print str[-3:] #截取倒数第三位到结尾


print str[:-5:-3] #逆序截取,具体啥意思没搞明白?


字符串中的搜索和替换:


S.find(substr, [start, [end]])   #返回S中出现substr的第一个字母的标号,如果S中没有substr则返回-1。start和end作用就相当于在S[start:end]中搜索


S.index(substr, [start, [end]])   #与find()相同,只是在S中没有substr时,会返回一个运行时错误


S.rfind(substr, [start, [end]])   #返回S中最后出现的substr的第一个字母的标号,如果S中没有substr则返回-1,也就是说从右边算起的第一次出现的substr的首字母标号


S.rindex(substr, [start, [end]])


S.count(substr, [start, [end]])    #计算substr在S中出现的次数


S.replace(oldstr, newstr, [count])    #把S中的oldstr替换为newstr,count为替换次数。这是替换的通用形式,还有一些函数进行特殊字符的替换


S.strip([chars]) #把S中前后chars中有的字符全部去掉,可以理解为把S前后chars替换为None


S.lstrip([chars])


S.rstrip([chars])


S.expandtabs([tabsize])   #把S中的tab字符替换没空格,每个tab替换为tabsize个空格,默认是8个


字符串的分割和组合:


S.split([sep, [maxsplit]]) #以sep为分隔符,把S分成一个list。maxsplit表示分割的次数。默认的分割符为空白字符


S.rsplit([sep, [maxsplit]])


S.splitlines([keepends]) #把S按照行分割符分为一个list,keepends是一个bool值,如果为真每行后而会保留行分割符。


S.join(seq) #把seq代表的序列──字符串序列,用S连接起来


字符串的mapping,这一功能包含两个函数:


String.maketrans(from, to) #返回一个256个字符组成的翻译表,其中from中的字符被一一对应地转换成to,所以from和to必须是等长的。


S.translate(table[,deletechars])


#


使用上面的函数产后的翻译表,把S进行翻译,并把deletechars中有的字符删掉。需要注意的是,如果S为unicode字符串,那么就不支持


deletechars参数,可以使用把某个字符翻译为None的方式实现相同的功能。此外还可以使用codecs模块的功能来创建更加功能强大的翻译


表。


字符串中字符大小写的变换:


S.lower()   #小写


S.upper()   #大写


S.swapcase()   #大小写互换


S.capitalize()   #首字母大写


String.capwords(S)  #这是模块中的方法。它把S用split()函数分开,然后用


capitalize()把首字母变成大写,最后用join()合并到一起


S.title()    #只有首字母大写,其余为小写,模块中没有这个方法


字符串去空格及去指定字符


去两边空格:str.strip()


去左空格:str.lstrip()


去右空格:str.rstrip()


去两边字符串:str.strip('d'),相应的也有lstrip,rstrip


str=' python String function '


print '%s strip=%s' % (str,str.strip())


str='python String function'


print '%s strip=%s' % (str,str.strip('d'))


按指定字符分割字符串为数组:str.split(' ')


字符串编码和解码的函数:


S.encode([encoding,[errors]]) #


其中encoding可以有多种值,比如gb2312 gbk gb18030 bz2 zlib big5


bzse64等都支持。errors默认值为strict,意思是UnicodeError。可能的值还有'ignore', 'replace',


'xmlcharrefre


S.encode([encoding,[errors]]) #


其中encoding可以有多种值,比如gb2312 gbk gb18030 bz2 zlib big5


bzse64等都支持。errors默认值为"strict",意思是UnicodeError。可能的值还有'ignore', 'replace',


'xmlcharrefreplace', 'backslashreplace'


和所有的通过codecs.register_error注册的值。这一部分内容涉及codecs模块,不是特明白


S.decode([encoding,[errors]])


字符串的测试函数,这一类函数在string模块中没有,这些函数返回的都是bool值:


S.startwith(prefix[,start[,end]]) #是否以prefix开头


S.endwith(suffix[,start[,end]])  #以suffix结尾


S.isalnum()  #是否全是字母和数字,并至少有一个字符


S.isalpha()  #是否全是字母,并至少有一个字符


S.isdigit()  #是否全是数字,并至少有一个字符


S.isspace() #是否全是空白字符,并至少有一个字符


S.islower() #S中的字母是否全是小写


S.isupper() #S中的字母是否便是大写


S.istitle() #S是否是首字母大写的


字符串类型转换函数,这几个函数只在string模块中有:


string.atoi(s[,base])  #base默认为10,如果为0,那么s就可以是012或0x23这种形式的字符串,如果是16那么s就只能是0x23或0X12这种形式的字符串


string.atol(s[,base])  #转成long


string.atof(s[,base])  #转成float


python字符串与数字的转化


数字变为字符串 str()


字符串变为数字 string.atoi(s,[,base]) //base为进制基数


浮点数转换 string.atof(s)


字符串在输出时的对齐:


S.ljust(width,[fillchar])   #输出width个字符,S左对齐,不足部分用fillchar填充,默认的为空格。


S.rjust(width,[fillchar])    #右对齐


S.center(width, [fillchar])    #中间对齐

S.zfill(width)   #把S变成width长,并在右对齐,不足部分用0补足

字符串中的单引号,双引号用 \ 来转义。

怎么把字符串转换成数字?

int('1234')

string模块里有

import string

>>> a="12345"

>>> import string

>>> string.atoi(a)

12345

>>> b="123.678"

>>> string.atof(b)

123.678

转换成 long,用string.atol()


帅帅马
7楼 · 2021-05-23 17:56

1、使用len()函数

这是最直接的方法。 在这里,我们使用len()函数。 字符串作为参数传递给函数,我们就能得到字符串的长度。

下面,我们通过一个实例来演示一下:str ="Tutorials"

print("Length of the String is:", len(str))

输出:Length of the String is: 9

2、使用切片

我们可以使用字符串切片方法来计算字符串中每个字符的位置。 字符串中位数的最终计数成为字符串的长度。

示例如下:str = "Tutorials"

position = 0

while str[position:]:

position += 1

print("The total number of characters in the string: ",position)

输出:The total number of characters in the string: 9

3、使用join()和count()方法

我们也可以使用join()和count()方法来获得字符串长度,示例如下:str = "Tutorials"

#iterate through each character of the string

# and count them

length=((str).join(str)).count(str) + 1

# Print the total number of positions

print("The total number of characters in the string: ",length)

输出:The total number of characters in the string: 9

以上就是三种方法可以实现读取字符串长度哦


相关问题推荐

  • 回答 3

    换行。比如,print hello\nworld效果就是helloworld\n就是一个换行符。\是转义的意思,'\n'是换行,'\t'是tab,'\\'是,\ 是在编写程序中句子太长百,人为换行后加上\但print出来是一整行。...

  • 回答 42

    十种常见排序算法一般分为以下几种:(1)非线性时间比较类排序:a. 交换类排序(快速排序、冒泡排序)b. 插入类排序(简单插入排序、希尔排序)c. 选择类排序(简单选择排序、堆排序)d. 归并排序(二路归并排序、多路归并排序)(2)线性时间非比较类排序:...

  • 回答 70
    已采纳

    前景很好,中国正在产业升级,工业机器人和人工智能方面都会是强烈的热点,而且正好是在3~5年以后的时间。难度,肯定高,要求你有创新的思维能力,高数中的微积分、数列等等必须得非常好,软件编程(基础的应用最广泛的语言:C/C++)必须得很好,微电子(数字电...

  • 回答 28

    迭代器与生成器的区别:(1)生成器:生成器本质上就是一个函数,它记住了上一次返回时在函数体中的位置。对生成器函数的第二次(或第n次)调用,跳转到函数上一次挂起的位置。而且记录了程序执行的上下文。生成器不仅记住了它的数据状态,生成器还记住了程序...

  • 回答 9

    python中title( )属于python中字符串函数,返回’标题化‘的字符串,就是单词的开头为大写,其余为小写

  • 回答 6

    第一种解释:代码中的cnt是count的简称,一种电脑计算机内部的数学函数的名字,在Excel办公软件中计算参数列表中的数字项的个数;在数据库( sq| server或者access )中可以用来统计符合条件的数据条数。函数COUNT在计数时,将把数值型的数字计算进去;但是...

  • 回答 1

    head是方法,所以需要取小括号,即dataset.head()显示的则是前5行。data[:, :-1]和data[:, -1]。另外,如果想通过位置取数据,请使用iloc,即dataset.iloc[:, :-1]和dataset.iloc[:, -1],前者表示的是取所有行,但不包括最后一列的数据,结果是个DataFrame。...

  • Python入门简单吗2021-09-23 13:21
    回答 45

    挺简单的,其实课程内容没有我们想象的那么难、像我之前同学,完全零基础,培训了半年,直接出来就工作了,人家还在北京大公司上班,一个月15k,实力老厉害了

  • 回答 4

    Python针对众多的类型,提供了众多的内建函数来处理(内建是相对于导入import来说的,后面学习到包package时,将会介绍),这些内建函数功用在于其往往可对多种类型对象进行类似的操作,即多种类型对象的共有的操作;如果某种操作只对特殊的某一类对象可行,Pyt...

  • 回答 8

     相当于 ... 这里不是注释

  • 回答 4

    还有FIXME

  • 回答 3

    python的两个库:xlrd和xlutils。 xlrd打开excel,但是打开的excel并不能直接写入数据,需要用xlutils主要是复制一份出来,实现后续的写入功能。

  • 回答 8

    单行注释:Python中的单行注释一般是以#开头的,#右边的文字都会被当做解释说明的内容,不会被当做执行的程序。为了保证代码的可读性,一般会在#后面加一两个空格然后在编写解释内容。示例:#  单行注释print(hello world)注释可以放在代码上面也可以放在代...

  • 回答 2

    主要是按行读取,然后就是写出判断逻辑来勘测行是否为注视行,空行,编码行其他的:import linecachefile=open('3_2.txt','r')linecount=len(file.readlines())linecache.getline('3_2.txt',linecount)这样做的过程中发现一个问题,...

  • 回答 4

    或许是里面有没被注释的代码

  • 回答 26

    自学的话要看个人情况,可以先在B站找一下视频看一下

没有解决我的问题,去提问