当前位置:   article > 正文

python利用re模块提取文本中目标字符串和行_python中取出一行中名字的字符串

python中取出一行中名字的字符串

        批量处理文本的时候,会经常要用到批量提取文本中想要的信息,或者某一行。利用python的re模块可以方便达到我们的目的

        re模块的具体使用可以参考Python 正则表达式 | 菜鸟教程,本文章只介绍标题的功能如何实现。

比如从下面一行中要提取名字ftz

my name is ftz, who are you?

提取的语句如下:

  1. >>> import re
  2. >>>
  3. >>> str = "my name is ftz, who are you?"
  4. >>>
  5. >>> name = re.findall(r"^my name is (.+?),",str)
  6. >>>
  7. >>> name
  8. ['ftz']
  9. >>>

        re.findall返回的是一个列表,如果没有匹配上则是一个空列表,如果有多个匹配,则返回的列表是多个匹配的结果 

        如果我们想从文本中提取出某一行,文本内容如下:

  1. who are you?
  2. my name is ftz
  3. and you?
  4. no name
  5. ha ha

我们想提取出第二行

  1. >>> import re
  2. >>>
  3. >>> f = open("./english.txt",encoding='utf-8')
  4. >>> data = f.read()
  5. >>> f
  6. <_io.TextIOWrapper name='./english.txt' mode='r' encoding='utf-8'>
  7. >>>
  8. >>> sentence = re.findall(r"^my name.*",data,re.M)
  9. >>> sentence
  10. ['my name is ftz']
  11. >>>

        上面的re.findall后面的参数中有个re.M,这个是多行模式,假如有两行my name开头的,则会匹配出两行,文本修改如下:

  1. who are you?
  2. my name is ftz
  3. and you?
  4. my name is zte
  5. ha ha

匹配结果如下:

  1. >>> f = open("./english.txt",encoding='utf-8')
  2. >>> data = f.read()
  3. >>> sentence = re.findall("^my name.*",data,re.M)
  4. >>> sentence
  5. ['my name is ftz', 'my name is zte']
  6. >>>

        正则表达式可以包含一些可选标志修饰符来控制匹配的模式。修饰符被指定为一个可选的标志。多个标志可以通过按位 OR(|) 它们来指定。如 re.I | re.M 被设置成 I 和 M 标志

    1. re.I 忽略大小写
    2. re.L 表示特殊字符集 \w, \W, \b, \B, \s, \S 依赖于当前环境
    3. re.M 多行模式
    4. re.S 即为 . 并且包括换行符在内的任意字符(. 不包括换行符)
    5. re.U 表示特殊字符集 \w, \W, \b, \B, \d, \D, \s, \S 依赖于 Unicode 字符属性数据库
    6. re.X 为了增加可读性,忽略空格和 # 后面的注释
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/从前慢现在也慢/article/detail/156885
推荐阅读
相关标签
  

闽ICP备14008679号