Python rstrip()无法清除字符串指定字符的解决办法

它的函数原型:string.strip(s[, chars]),
它返回的是字符串的副本,并删除前导和后缀字符。(意思就是你想去掉字符串里面的哪些字符,那么你就把这些字符当参数传入。此函数只会删除头和尾的字符,中间的不会删除。)如果strip()的参数为空,那么会默认删除字符串头和尾的空白字符(包括\n,\r,\t这些)。

    def left_remove(self):
        '''删除文件里左边的空格与右边的句号,并且切割顿号后面的前面的数字,以追加的方式‘a+’追加写入新的文件中'''
        with open(self.path,'r+', encoding='utf-8') as anquan:
            anquan_lines = anquan.readlines()
            for i in anquan_lines:
                # print(i)
                null_rstring = i.rstrip('。') # 清除字符串 右边的 句号
                print(null_rstring)
                str_list = null_rstring.split('、') #以顿号去切割字符串
                # print(str_list)
                # print(len(str_list))
                # print(null_string)
                path_f = self.path_a[0] + '_副本.txt'
                with open(path_f, 'a+') as fuben:
                    if len(str_list) >= 2:
                        path_i = fuben.write(str_list[1] )
                    elif len(str_list) == 1:
                        path_w = fuben.write(str_list[0])

上段代码执行后的结果。
这段代码中之清除了最后一行的句号,其他行的没有清除

原因:
因为其他的行中最后都有个默认的换行‘\n’。

解决办法:
要在null_rstring = i.rstrip(’。’)中加入句号后面加入\n,这样就可以清除句号了
代码写成null_rstring = i.rstrip(’。\n’)

衍生问题:
连换行符删除后,所有的内容都在一行中显示,没有换行了
要解决这个问题就在逐行写入的时候加入 \n
代码如下:

    def left_remove(self):
        '''删除文件里左边的空格与右边的句号,并且切割顿号后面的前面的数字,以追加的方式‘a+’追加写入新的文件中'''
        with open(self.path,'r+', encoding='utf-8') as anquan:
            anquan_lines = anquan.readlines()
            for i in anquan_lines:
                # print(i)
                null_rstring = i.rstrip('。\n') # 清除字符串 右边的 句号
                print(null_rstring)
                str_list = null_rstring.split('、') #以顿号去切割字符串
                # print(str_list)
                # print(len(str_list))
                # print(null_string)
                path_f = self.path_a[0] + '_副本.txt'
                with open(path_f, 'a+') as fuben:
                    if len(str_list) >= 2:
                        path_i = fuben.write(str_list[1] + '\n')
                    elif len(str_list) == 1:
                        path_w = fuben.write(str_list[0] + '\n')

在文件中的结果如下:
在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值