Python基础与深入(五)

1.正则表达式相关知识及字符串操作

参考廖雪峰

  • 字符串拼接join方法
    str.join(iterable)

    1
    2
    L = ["<0112>", "<32>", "<1024x768>", 60, "<1>", "<100.0>", "<500.0>"]
    print(''.join(str(x) for x in L))
  • 如何判断字符串a是否以字符串b开头或结尾,str.startswith(),str.endswith()

    1
    2
    a="abcdefg||fadfa.py"
    a.endswith(('.py','.sh'))
  • 如何用Python来进行查询和替换一个文本字符串?

    1
    2
    s = '\tabd\t124\txyz\r\n'
    print(re.sub('\t|\r|\n','',s))
  • 一次性拆分字符串 re.split(),str.split()

    1
    2
    3
    4
    5
    6
    7
    8
    """
    解决方案:
    方法一:连续使用是str.split()方法,每次处理一种分隔符号
    方法二:使用正则表达式的re.split()方法,一次性拆分字符串
    """
    s = 'ab;cd|efg|hi,jklmn|topq;rst,uvw|txyz'
    t = s.split(';')
    t1 = re.split(r'[,;|\t]+',s)
  • Python里面match()和search()的区别?

    1
    2
    re模块中match(pattern,string[,flags]),检查string的开头是否与pattern匹配。
    re模块中re.search(pattern,string[,flags]),在string搜索pattern的第一个匹配值。
  • Python re.findall()方法

    1
    2
    3
    4
    #寻找一段字符串中的11位数字(手机号),返回列表
    import re
    str1="13832244324gdsjsfhauer13632996133"
    re.findall(r'\d{11}',str1)
  • 用Python匹配HTML tag的时候,<.>和<.?>有什么区别?
    答:术语叫贪婪匹配( <.> )和非贪婪匹配(<.?> )
    前者是贪婪匹配,会从头到尾匹配 xyz,而后者是非贪婪匹配,只匹配到第一个 >。

  • 如何去掉字符串中不需要的字符
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
"""
解决方案:
方法1:字符串strip(),lstrip(),rstrip()方法去掉字符串两段字符
方法2:删除单个固定位置的字符,可以使用切片+拼接的方式
方法3:字符串的replace()方法或正则表达式re.sub()删除任意位置字符
方法4:字符串translate()方法,可以同时删除多种不同字符
"""

s=' nick2008@gmail.com '
print(s.strip(' '))
print('----------------')
s = '====+-----'
print(s.strip('-='))
print('----------------')
s=' nick2008 @gmail.com '
print(s[2:11]+s[12:23])
print('----------------')

s = '\tabd\t124\txyz\r\n'
print(s.replace('\t',''))
print('----------------')
s = '\tabd\t124\txyz\r\n'
print(re.sub('\t|\r|\n','',s))
print('----------------')
s = '\tabd\t124\txyz\r\n'
print(s.translate(None,'\t\r\n'))

s = '\tabd\t124\txyz\r\n'
print(s.replace('\t',''))
u = u'uulàlà,là,māmá'
print u.translate(dict.fromkeys([0x0,0x0101,0x1]))
  • 补充 单引号,双引号,三引号的区别

答:单引号和双引号是等效的,如果要换行,需要符号(),三引号则可以直接换行,并且可以包含注释

如果要表示Let’s go 这个字符串

单引号:s4 = ‘Let\’s go’

双引号:s5 = “Let’s go”

s6 = ‘I realy like“python”!’

这就是单引号和双引号都可以表示字符串的原因了

坚持原创技术分享,您的支持将鼓励我继续创作!