Python学习笔记:字符串

Python学习笔记:字符串

本文是博主在学习Python时对字符串操作的一些整理笔记,现在分享给有需要的读者,一起探讨学习。

拼接和合并

  • 直接相加法:利用加号+进行多个字符串的合并。
    如下:
1
2
3
4
5
>>> s1 = 'hello,'
>>> s2 = 'young!'
>>> print(s1+s2)
hello,young!
>>>
  • 利用join()方法连接多个字符串。
    如下:str.join(),其中str表示用来连接多个字符串列表的字符。
1
2
3
4
>>> str = ['linjiafengyang', 'github', 'io']
>>> print('.'.join(str))
linjiafengyang.github.io
>>>
  • 相乘法拷贝多个字符串:利用乘法符号*连接多个相同的字符串。
    如下:打印5个love字样的字符串
1
2
3
4
>>> s1 = 'love'
>>> print(s1*5)
lovelovelovelovelove
>>>

切片和分割

  • 切片:要使用Python字符串的某一段子串,操作很简单,利用切片可解决。
    如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
>>> str = 'I love python.'
>>> print(str[:6]) # 取前6个字符
I love
>>> print(str[2:6]) # 取第3到第6个字符
love
>>> print(str[-7:]) # 取从倒数第7个字符开始到结束
python.
>>> print(str[-7:-1]) # 取从倒数第7个字符开始到倒数第一个字符
python
>>> print(str[::]) # 复制字符串
I love python.
>>> print(str[0:6:2]) # 从开始到第6个字符,中间空1个字符
Ilv
>>>
  • 分割:
    简单地分割字符串可以利用split()方法,如下:利用原始字符串中出现的符号-作为split()方法的参数,分割原始字符串,结果返回一个列表list
1
2
3
4
>>> number = '1-800-273-8255'
>>> print(number.split('-'))
['1', '800', '273', '8255']
>>>

如果遇到比较复杂的分割,可以使用正则表达式来表示,鉴于详解正则表达式所需篇幅较大,这里简单提一下,以后会有专题讲正则表达式的。
如下:r表示不转义,分隔符可以是;或者,或者空格后面跟多个额外的空格,然后按照这个模式去分割

1
2
3
4
5
>>>import re
>>> line = 'very much, hello world; python, I ,like, it'
>>> print(re.split(r'[;,s]\s*', line))
['very much', 'hello world', 'python', 'I ', 'like', 'it']
>>>

查找和匹配

  • 查找字符串开头和结尾:可以利用startswith()endswith()方法。
    如下:
1
2
3
4
5
6
>>> filename = 'learnPython.py'
>>> print(filename.startswith('learn'))
True
>>> print(filename.endswith('.py'))
True
>>>
  • 查找子字符串:可以利用find()方法查找,结果返回子字符串的起始位置下标,若找不到则返回-1。
    如下:
1
2
3
4
5
6
7
8
>>> str = 'Youtube, Facebook, Twitter, Instagram'
>>> print(str.find('youtube'))
-1
>>> print(str.find('Youtube'))
0
>>> print(str.find('Face'))
9
>>>
  • 当然,比较复杂的可以使用正则表达式的match()方法,这里依然简单提一下。
1
2
3
4
5
6
7
8
9
>>> date = '2018/02/28'
>>> import re
>>> print(re.match(r'\d+/\d+/\d+', date))
<_sre.SRE_Match object; span=(0, 10), match='2018/02/28'>
>>> if re.match(r'\d+/\d+/\d+', date):
... print('It can match.')
...
It can match.
>>>

替换

  • 简单地替换可以利用replace()方法解决。
    如下:
1
2
3
>>> str = 'I love C++'
>>> print(str.replace('C++', 'Python'))
I love Python
  • 当然也可以使用正则表达式中的sub()方法进行复杂地替换操作。
1
2
3
4
>>> grade = 'C++ 90, Python 94'
>>> print(re.sub(r'\d+', '100', grade))
C++ 100, Python 100
>>>

删除

  • 去掉字符串首尾的空格、制表符、换行符,可利用strip()方法,如下:
1
2
3
4
>>> line = ' Please don\'t go!    \n'
>>> print(line.strip())
Please don't go!
>>>

注意:字符串内部的空格无法使用该函数,必须使用re模块。

  • 复杂的文本清理,可以利用str.maketrans()str.translate(),先构建一个转换表table,表示把't''o'转成大写的'T''O',转换old_str,如下:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    >>> import string
    >>> old = 'to'
    >>> new = 'TO'
    >>> table = str.maketrans(old, new)
    >>> old_str = 'Hello world, welcome to my blog.'
    >>> new_str = old_str.translate(table)
    >>> print(new_str)
    HellO wOrld, welcOme TO my blOg.
    >>>
------本文结束感谢阅读------