每天学点Python之strings

最后更新于:2022-04-01 16:23:10

# 每天学点Python之strings 在Python3中所有的字符编码都是Unicode,所以不用再担心编码问题了。 ### 基本操作 在Python中字符串可以用单引号或者双引号中包含字符来表示,下面列一下最最基本的操作,分别是赋值、求长度、特定位置的字符和字符串连接: ~~~ In[5]: s = "hello world" In[6]: len(s) Out[6]: 11 In[7]: s[0] Out[7]: 'h' In[8]: s + '!' Out[8]: 'hello world!' ~~~ 如果字符串很长,要跨越多行,可以用三引号将内容包含进来: ~~~ In[32]: s = '''a ... b ... c ... ''' In[33]: s Out[33]: 'a\nb\nc\n' ~~~ > 注:命令前的In/Out[n]只是表示第几条命令,没有实际意义 ### 格式化 Python的字符串格式化非常简单,在需要插入值的地方用{n}表示,直接调用format()函数并传入相应的参数即可,注意下标是从0开始的,而且传入的参数必须大于等于需要的参数数目(多传入的会被忽略): ~~~ In[10]: s = 'my name is {0}, my age is {1}' In[11]: s.format('drfish',20) Out[11]: 'my name is drfish, my age is 20' In[12]: s.format('drfish') Traceback (most recent call last): File "<ipython-input-12-305d7c657a14>", line 1, in <module> s.format('drfish') IndexError: tuple index out of range In[13]: s.format('drfish',20,22) Out[13]: 'my name is drfish, my age is 20' ~~~ 如果参数非常多,用数字来表示容易产生混乱,可以使用别名表示: ~~~ In[28]: '{name} is {age}. '.format(name="drfish", age=22) Out[28]: 'drfish is 22. ' ~~~ 再来看复杂一点的,输如的参数不仅仅是简单的值替换,而能在字符串中对其进行后续处理,如传入一个字典,可以对其取某个键的值,同理还可以使用一些复杂的对象的方法属性: ~~~ In[22]: s = 'my name is {0[name]}, my age is {0[age]}' In[23]: s.format({"name":"drfish","age":20}) Out[23]: 'my name is drfish, my age is 20' ~~~ 此外还能对输出的格式进行规定: ~~~ # 保留小数点后4位 In[26]: '{0:.4} is a decimal. '.format(1/3) Out[26]: '0.3333 is a decimal. ' # 用'_'补齐字符串 In[27]: '{0:_^11} is a 11 length. '.format("drfish") Out[27]: '__drfish___ is a 11 length. ' # 指定宽度 In[30]: 'My name is {0:8}.'.format('drfish') Out[30]: 'My name is drfish .' ~~~ ### 常用方法 **大小写** 字符串可以直接进行大小写的判断与转换: ~~~ In[34]: 'hello'.upper() Out[34]: 'HELLO' In[35]: 'Hello'.lower() Out[35]: 'hello' In[36]: 'Hello'.isupper() Out[36]: False ~~~ **分割** 分割函数str.split()可以接收两个参数,一个是分割符,另一个是进行分割的数目: ~~~ In[37]: 'a=1,b=2,c=3'.split('=',2) Out[37]: ['a', '1,b', '2,c=3'] ~~~ **计数** 统计一个字符串中的某字符串的数目: ~~~ In[38]: "ab c ab".count("ab") Out[38]: 2 ~~~ **截取** 截取操作与列表相同: ~~~ In[39]: "hello world"[3:8] Out[39]: 'lo wo' ~~~
';