IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Python知识库 -> 第1篇:Python删除开头或结尾“指定顺序”字符串,用strip是错误的 -> 正文阅读

[Python知识库]第1篇:Python删除开头或结尾“指定顺序”字符串,用strip是错误的

起因

昨天快下班时,老板临时交代做个功能:获取URL中最后的文件名,不要后缀。

对于10年编码经验的我来说,这还不简单?小意思,2分钟给你搞定!

代码敲起来

语言学过很多不算牛,能记清才算牛。

我就经常记混,每次用之前都得搜索一下,于是输入关键字“python trim”

?

原来,python修剪字符串前后指定字符串,没有trim,但能用strip替代。

url = '***/apple.html'
filename = url.split('/')[-1].strip('.html')
print(filename)
复制代码

输出结果:

apple
复制代码

搞定,老板可以上线了!

偶然性报错

今天一大早到公司,老板说昨天你写的那个功能有问题。

不可能啊,我敢百分百保证。

老板说,不信你自己看看。

于是我去看了下,果然发现原本以为“不可能”的错误,当出现下面这种情况时,就出错了:

url = '***/peach.html'
复制代码

结果为:

peac
复制代码

啊,怎么会?

定位

好吧,我看下哪里有问题:

url = '***/peach.html'
filename = url.split('/')[-1].strip('.html')
print(url.split('/')[-1]) 
print(url.split('/')[-1].strip('.html'))
复制代码

输出结果为:

peach.html
peac
复制代码

果然是strip有问题,仔细百度了一下。

原来,strip是可以从前后两端往中间方向修剪指定字符,但不按指定字符顺序,只要出现的字符都会被修剪掉,直到发现第一个非指定字符为止。

也就是说,peach.html的h.html都会被修剪掉。

解决

有一种最简单,但不严谨的做法,就是用replace替代:

url = '***/peach.html'
filename = url.split('/')[-1].replace('.html', '')
print(filename)
复制代码

不出所料,结果为正确的peach。

因为是网址,所以.html肯定出现在最后,所以用这种办法没问题,如果不是这种场景呢?

在回答这个问题之前,我不禁对一直以来深信不疑的php 的 trim函数也产生了怀疑。

于是立刻敲了起来:

<?php
$str = "peach.html";
echo trim($str,".html");
复制代码

果然,trim也是有这个问题,以上代码也是输出peac。

这个php例子先搁一边,回到python例子,如何正确地修剪指定顺序的字符串呢?

延伸

如果是去除最左边的指定顺序字符串,可以让replace带上第三个参数(替换次数)肯定没问题:

url = 'old old peach.html'
filename = url.replace('old', '', 1)
print(filename)
复制代码

以上代码只会做一次replace,即只会删除最开头的old,会保留之后的old。

如果去除最右边的指定顺序字符串:

import re
url = '***/peach.html'
url = re.sub(r'.html$', '', url)
print(url)
复制代码

使用正则,就可以删除结尾的字符串.html

当然了,也可以使用正则去掉开头的指定字符串,读者可以自己去试一下。

欢迎关注我:

?

  Python知识库 最新文章
Python中String模块
【Python】 14-CVS文件操作
python的panda库读写文件
使用Nordic的nrf52840实现蓝牙DFU过程
【Python学习记录】numpy数组用法整理
Python学习笔记
python字符串和列表
python如何从txt文件中解析出有效的数据
Python编程从入门到实践自学/3.1-3.2
python变量
上一篇文章      下一篇文章      查看所有文章
加:2021-10-27 12:47:35  更:2021-10-27 12:48:34 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/15 23:47:07-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码