python字符串查找、替换、移除空格字符

假设我们有一个关键词“智能音箱”,我们想通过这个关键词来查询它在  '智能音箱!#@@#我非常喜欢用智能音箱,#$#%智能音箱棒棒的,非常好用的,智能音箱真好玩#$%^^^智能音箱'  这样一段文字中相关联的文字,比如要截取出当前关键词出现的位置前后的五个字(去除标点符号),如果用python该如何实现呢?这里我们就会想到,需要用到哪些知识点:

1.字符串查找:
用法: str.find(str, beg=0, end=len(string))

参数:
str -- 指定检索的字符串,当只传入此参数时,默认查找在字符串里第一个出现的子串
beg -- 开始索引,默认为0。
end -- 结束索引,默认为字符串的长度。

返回值:
如果包含子字符串返回开始的索引值,否则返回-1。

2.字符串检索并替换 re.sub
用法:re.sub(pattern, repl, string, count=0, flags=0)

参数:
pattern : 正则中的模式字符串。
repl : 替换的字符串,也可为一个函数。
string : 要被查找替换的原始字符串。
count : 模式匹配后替换的最大次数,默认 0 表示替换所有的匹配。
flags : 编译时用的匹配模式,数字形式
前三个为必选参数,后两个为可选参数。

3.移除字符串头尾指定的字符(默认为空格)或字符序列
用法:str.strip([chars])
参数:chars -- 移除字符串头尾指定的字符序列。
返回值:
返回移除字符串头尾指定的字符序列生成的新字符串。

下面直接上代码:

import re

def test(keyWord,s,subStrLen):

    # 定义正则表达去除字符串里所有标点符号
    r = '[’!"#$%&\'()*+,-./:;<=>?@[\\]^_`{|}~\n。!,]+'
    s = re.sub(r, '', s).strip()  # 同时去除字符串前后的空格

    # 当find中没有第二个参数起步下标时,默认计算第一个要查找的字符的下标
    n = s.find(keyWord)

    arr = []  # 将截取出的字符串保存在此数组中

    # 当find查找到要统计下标的字符时,返回字符所在下标,直到统计没有这个字符时,返回的下标为-1。
    while n != -1:
        # 如果查找到的下标小于需要截取的字符长度,则截取的首index取0
        if n < subStrLen:
            startStr = s[0: n]  # 截取出关键字前面的5个字符
        else:
            startStr = s[n-subStrLen: n]

        # 如果截取出的s不含有keyWord关键字,再统计(功能要求:不统计关键字带关键字本身的字符串)
        if len(startStr) > 0 and keyWord not in startStr:
            arr.append(startStr)

        # 截取出关键字后的5个字符
        endStr = s[n+len(keyWord): n+len(keyWord)+subStrLen]
        # 如果截取出的s不含有keyWord关键字,再统计
        if len(endStr) and keyWord not in endStr:
            arr.append(endStr)

        # 方案一:从当前统计到的下标 + subStrLen(即5)-1的位置开始,继续统计下标(不用考虑相邻关键字)
        n = s.find(keyWord, n + subStrLen - 1)

        # 方案二: 每次取完数据,则截取掉,防止相邻关键字之间的字符重复截取(根据自己需要,自行调整)
        # s = s[n+len(keyWord)+subStrLen:]
        # n = s.find(keyWord)

    print(arr)


if __name__ == '__main__':
    keyWord = '智能音箱'
    s = '智能音箱!#@@#我非常喜欢用智能音箱,#$#%智能音箱棒棒的,非常好用的,智能音箱真好玩#$%^^^智能音箱'
    subStrLen = 5  # 字符串截取长度
    test(keyWord, s, subStrLen)

随便写的一个小demo,如果以上对你有帮助,记得点赞哦~

### Python 中用于处理字符串空格的方法 在 Python 的 `str` 类型中,提供了多种方法来处理字符串中的字符(包括空格、制表符 `\t` 和换行符等)。以下是几个常用的方法及其功能描述: #### strip() 该方法会移除字符串两端的所有字符(包括空格、制表符和换行符),但不会影响中间的字符[^2]。 ```python txt = " hello world " result = txt.strip() print(result) # 输出:"hello world" ``` #### rstrip() 此方法仅移除字符串右侧的所有字符。左侧的字符保持不变。 ```python txt = " python programming " result = txt.rstrip() print(result) # 输出:" python programming" ``` #### lstrip() 与 `rstrip()` 对应,`lstrip()` 方法只移除字符串左侧的字符。 ```python txt = " data science " result = txt.lstrip() print(result) # 输出:"data science " ``` #### replace() 如果需要替换所有的连续字符为单个空格,则可以结合正则表达式或者简单的字符串操作实现[^1]。 ```python import re txt = " machine learning is fun " result = re.sub(r'\s+', ' ', txt).strip() print(result) # 输出:"machine learning is fun" ``` #### split() 和 join() 通过先调用 `split()` 将字符串白分隔成列表项,再利用 `' '.join()` 合并这些项目,也可以达到去除多余空格的效果[^3]。 ```python txt = " artificial intelligence and deep learning " parts = txt.split() result = ' '.join(parts) print(result) # 输出:"artificial intelligence and deep learning" ``` 以上就是一些常见的用来管理或调整字符串内部以及边缘处空格的方法。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值