正则表达式怎么删去多余的问号

python的正则表达式怎么删去多余 重复的问号呀? rt求解!

import re


str = "Hello??world???How?are????you?"
result = re.sub(r'\?+', '?', str)
print(result)


什么叫多余的问号?用例摆出来啊

要删除多余重复的问号,可以使用正则表达式中的"?"符号进行匹配,具体操作如下:

使用re.sub()函数进行替换操作

构造正则表达式,匹配多余的重复问号

将多余的重复问号替换成一个问号
具体代码如下:

import re
text = "How??are???you????doing?"
pattern = r'\?+'
replaced_text = re.sub(pattern, '?', text)
print(replaced_text)

首先导入re模块,然后定义一个字符串变量text,该字符串中包含多个重复的问号。然后定义一个正则表达式pattern,该正则表达式使用了“+”符号表示匹配一个或多个前面的字符。这里匹配的是一个或多个问号。最后使用re.sub()函数进行替换操作,将匹配到的多个重复问号替换成一个问号。最后输出替换后的字符串。

思路就是当?连续重复出现时,替换为一个问号,参考代码:

>>> import re
>>> s = 'This is a nice day?? Do you think so????'
>>> re.sub(r'(\?+)', '?', s)
'This is a nice day? Do you think so?'

有帮助的话,请点采纳该答案~

  • 你可以参考下这个问题的回答, 看看是否对你有帮助, 链接: https://ask.csdn.net/questions/721969
  • 你也可以参考下这篇文章:python 正则表达式解决包含且不包含某字符串的问题
  • 除此之外, 这篇博客: python爬虫中的正则表达式中的 正则表达式常用的操作符 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • 操作符说明实例
    .表示任何单个字符
    [ ]字符集,对单个字符给出取值范围[abc]表示a、b、c,[a-z]表示a到z的单个字符,[WK],表示W、K
    [^ ]非字符集,对单个字符给出排除范围[^abc]表示非a或b或c的单个字符
    *前一个字符0次或者无限次扩展abc*,表示ab、abc、abcc、abcc等
    +前一个字符1次或者无限次扩展abc+,表示abc、abcc、abccc等
    ?前一个字符0次或1次扩展abc?表示ab、abc
    |左右表达式任意一个abc|def表示abc、def
    {m}扩展前一个字符m次ab{2}c表示abbc
    {m,n}扩展前一个字符m至n次(包括n)ab{1,2}c表示abc、abbc
    ^匹配字符串开头^abc表示abc且在一个字符串的开头
    $匹配字符串结尾abc$表示abc且在一个字符串的结尾
    ( )分组标记,内部只能使用|操作符(abc)表示abc,(abc|def)表示abc、def
    \d数字,等价于[0-9]
    \w单词字符,等价于[A-Za-z0-9_]

    举例:

    正则表达式对应字符串
    P(Y|YT|YTH|YTHO)?NPN,PYN,PYTN,PYTHN,PYTHON
    PYTHON+PYTHON,PYTHONN,PYTHONNN…
    PY[TH]ONPYTON,PYHON
    PY[^TH]?ONPYON,PYAaN,PYbON,PYcON…(没有T/H)
    PY{0:3}NPN,PYN,PYYN,PYYYN【表示0到3次】
    ^[A-Za-z]+$由26个字母组成的字符串
    ^[A-Za-z0-9]+$由26个字母和数字组成的字符串
    ^-?\d+$整数形式的字符串(可能有负数)
    ^[0-9]*[1-9][0-9]*$正整数形式的字符串**(如果[]中的元素没有约定次数,默认可以重复无限多次)**
    [1-9]\d{5}中国境内的邮政编码
    [\u4e00-\u9fa5]匹配中文字符(采用utf-8约定了中文字符的取值范围)
    \d{3}-\d{8}|\d{4}-\d{7}国内的电话号码,010-68913536或者010-6891-3536

    IP地址由4断组成,每段0-255,由’.'分割,如210.134.3.123

    第一步:\d+.\d+.\d+.\d+,不考虑长度

    第二步:\d{1,3}.\d{1,3}.\d{1,3}.\d{1,3}考虑了长度

    第三步:分割

    0-99:[1-9]?\d

    100-199:1\d{2}

    200-249:2[0-4]\d

    250-255:25[0-5]

    组合:(([1-9]?\d|1\d{2}|2[0-4]\d|25[0-5]).){3}([1-9]?\d|1\d{2}|2[0-4]\d|25[0-5])

  • 您还可以看一下 黄勇老师的Python从入门到实战 基础入门视频教程(讲解超细致)课程中的 子类不能继承父类的私有···小节, 巩固相关知识点