字符串拼接

实际场景:把列表中的数据拼接成一个字符串

解决方案:使用 str.join() 方法

>>> li = ['cxk', 'cxk', 'kk', 'caibi']
>>> ''.join([str(i) for i in li])
'cxkcxkkkcaibi'

推荐使用生成器表达式,如果列表很大,可以节省很多内存空间

>>> ''.join(str(i) for i in li)
'3cxkkkcaibi'

拆分含有多种分隔符的字符串

实际场景:把某个字符串依据分割符号拆分不同的字段,该字符串包含多种不同的分隔符

s = "ab;fd/ft|fs,f\tdf.fss*dfd;fs:uu}fsd"

1.使用 python 中的 split() 方法,由于 split 一次处理一个分隔符,例如:

>>> res = s.split(';')
>>> res
['ab', 'fd/ft|fs,f\tdf.fss*dfd', 'fs:uu}fsd']

所以我们需要根据字符串中的分隔符,依次分割,可以是 map 函数!

>>> list(map(lambda x: x.split("|"), res))
[['ab'], ['fd/ft', 'fs,f\tdf.fss*dfd'], ['fs:uu}fsd']]

结果变成了一个二维列表,而我们想要的结果是一维列表,怎么办?

创建一个临时列表保存结果。

# Python学习交流QQ群:857662006
>>> t = []
>>> list(map(lambda x: t.extend(x.split("|")), res))
[None, None, None]
>>> t
['ab', 'fd/ft', 'fs,f\tdf.fss*dfd', 'fs:uu}fsd']

结果符合我们的预期!接下来继续处理剩余的分隔符,重复动作,用 for 循环搞定!

最终代码如下:

def my_split(s, ds):
res = [s] for d in ds:
t = []
list(map(lambda x: t.extend(x.split(d)), res))
res = t
return res

将字符串和字符串中所有的分隔符传入,结果如下:

s = "ab;fd/ft|fs,f\tdf.fss*dfd;fs:uu}fsd"
print(my_split(s, ";/|,.}:*\t"))
运行结果:['ab', 'fd', 'ft', 'fs', 'f', 'df', 'fss', 'dfd', 'fs', 'uu', 'fsd']

2.使用 re 模块的中 split() 方法

re() 也给我们提供了 split() 方法,可以一次性分隔字符串!

import re

s = "ab;fd/ft|fs,f\tdf.fss*dfd;fs:uu}fsd"
print(re.split('[;/|,.}:*\t]', s))

结果一致,是不是很简单粗暴!

判读字符串a是否以字符串b开头或结尾

实际场景:比如某目录下有一系列文件:



编写程序给其中所有 .txt 文件和 .py 文件加上用户可执行权限

解决方案:

使用字符串 str.startswith() 和 str.endswith()

找出以 .txt 和 .py 结尾的文件,其接受一个元组

>>> import os
>>> os.listdir(".")
['app', 'config', 'requirements.txt', 'run.py', '__pycache__', 'gunicorn.conf.py', 'chromedriver', 'login_after2.png', 'readme.txt', 'slide.png', 'test.py', 'logs', 'chrome-linux.zip', 'gunicorn.pid', 'asgi.py', 'chrome-linux'] >>> [name for name in os.listdir(".") if name.endswith((".txt", ".py"))]
['requirements.txt', 'run.py', 'gunicorn.conf.py', 'readme.txt', 'test.py', 'asgi.py']

调整字符串中文本的格式

实际案列:例如在日志文件中,其中日期格式为'yyyy-mm-dd':

我们想把其中的日期改为美国日期格式'mm/dd/yyyy'.比如 2019-06-12 改成 06/12/2019 格式

解决方案:使用 re 中的 sub() 方法做字符串替换

利用正则表达式中的捕获组,捕获每个部分的内容,然后在替换在替换的字符串中调整各个捕获组的顺序!

代码如下:

import re

with open("info.log", "r", encoding="utf-8") as f:
file = f.read() print(re.sub('(\d{4})-(\d{2})-(\d{2})', r'\2/\3/\1', file))

捕获组中每组需要用括号括起来,然后默认从左至右分为组1, 组2…

下一个参数是我们要替换的格式,用 1,2,3 分别表示组1, 组2…

运行结果如下:

对字符串进行左,右,居中对齐

解决方案:

1.使用字符串中的 str.ljust(), str.rjust(), str.center() 进行左右居中对齐!

以上三种方法的基本用法:

>>> s = 'abc'
>>> s.ljust(20, '=')
'abc================='
>>> s.ljust(20)
'abc '

三种方法都可以设置默认填充值

2.使用内置的 format() 方法

>>> format(s, ">20")
' abc'
>>> format(s, "<20")
'abc '
>>> format(s, "^20")
' abc '

删除字符串中不需要的字符

实际案例:

过滤掉用户输入中前后多余的空白字符:“ nick2008@gmail.com ”

过滤掉某 windows 下编辑文本中的 “\r” :“hello world \r\n”

去掉文本中的 unicode 组合符号(音调):nǐ hǎo mā

解决方案:

使用 str.strip(), str.lstrip(), str.rstrip() 方法去掉字符串两端字符

使用 str.replace() 或者正则中的 re.sub()

使用字符串中 str.translate() 方法,可以同时删除多个不同的字符

Python超详细的字符串用法大全的更多相关文章

  1. 转帖: 一份超全超详细的 ADB 用法大全

    增加一句 连接 网易mumu模拟器的方法 adb  connect 127.0.0.1:7555 一份超全超详细的 ADB 用法大全 2016年08月28日 10:49:41 阅读数:35890 原文 ...

  2. 超全超详细的 ADB 用法大全

    原文地址:原文地址 基本用法 命令语法 为命令指定目标设备 启动/停止 查看 adb 版本 以 root 权限运行 adbd 指定 adb server 的网络端口 设备连接管理 查询已连接设备/模拟 ...

  3. Awesome Adb——一份超全超详细的 ADB 用法大全

    https://github.com/mzlogin/awesome-adb https://www.cnblogs.com/bravesnail/articles/5850335.html     ...

  4. Awesome Adb——一份超全超详细的 ADB 用法大全【转】

    本文转载自:https://juejin.im/entry/57c00fe4c4c971006179838a ADB,即 Android Debug Bridge,它是 Android 开发/测试人员 ...

  5. 一份超全超详细的 ADB 用法大全

    http://blog.csdn.net/u010375364/article/details/52344120

  6. 【转】Python学习---超详细字符串用法大全,好文推荐!

    来自:Python编程与实战(微信号:pthon1024),作者:Jerryning 没有办法转,整个复制下来了 本文要点 字符串拼接 拆分含有多种分隔符的字符串 判读字符串a是否以字符串b开头或结尾 ...

  7. Python(一)字符串用法

    一.程序输出 :print 在Python2.X中,print 的用法是 : print "hello word! " 在Python3.X中,print作为函数的方式出现,用法: ...

  8. 零基础入门C语言超详细的字符串详解

    本篇文章是对C语言字符串操作进行了详细的总结分析,需要的朋友参考下 1)字符串操作 strcpy(p, p1) 复制字符串 strncpy(p, p1, n) 复制指定长度字符串 strcat(p, ...

  9. Python入门教程 超详细1小时学会Python

    Python入门教程 超详细1小时学会Python 作者: 字体:[增加 减小] 类型:转载 时间:2006-09-08我要评论 本文适合有经验的程序员尽快进入Python世界.特别地,如果你掌握Ja ...

随机推荐

  1. ETCD:运行时重新配置设计

    原文地址:the runtime configuration design 运行时重新配置是分布式系统中最难,最容易出错的部分,尤其是在基于共识(像etcd)的系统中. 阅读并学习关于etcd的运行时 ...

  2. React躬行记(1)——函数式编程

    函数式编程是React的精髓,在正式讲解React之前,有必要先了解一下函数式编程,有助于更好的理解React的特点.函数式编程(Functional Programming)不是一种新的框架或工具, ...

  3. Implement Property Value Validation in Code 在代码中实现属性值验证(XPO)

    This lesson explains how to set rules for business classes and their properties. These rules are val ...

  4. ThinkPHP6框架的下载与安装

    thinkphp6发布也有一段时间了,相对来说比较稳定,是时候学习一下thinkphp6框架,提前学习,到正式发布的时候,可以直接拿来做正式的项目,先人一步.thinkPHP6.0在5.1的基础上对底 ...

  5. Thymeleaf常用语法:使用星号表达式

    在处理模板时,一般情况都是使用变量表达式 ${...} 来显示变量,还可以使用选定对象表达式 *{...},它也称为星号表达式.如果在模板中先选定了对象,则需要使用星号表达式.Thymeleaf的内置 ...

  6. WebAPI的使用

    后台API的代码: using System; using System.Collections.Generic; using System.Linq; using System.Web; using ...

  7. /dev/random 和 /dev/urandmon的差别

    最近使用这两个设备的时候,发现 /dev/random生成随机数很慢:于是就查了查: 这两个设备的差异在于:/dev/random的random pool依赖于系统中断,因此在系统的中断数不足时,/d ...

  8. The Preliminary Contest for ICPC Asia Nanjing 2019

    传送门 A. The beautiful values of the palace 题意: 给出一个\(n*n\)的矩阵,并满足\(n\)为奇数,矩阵中的数从右上角开始往下,类似于蛇形填数那样来填充. ...

  9. 设计模式-Proxy(结构型模式)

    以下代码来源: 设计模式精解-GoF 23种设计模式解析附C++实现源码 //Proxy.h #pragma once class Subject { public: virtual ~Subject ...

  10. Fiddler修改请求数据

    截断方法一: 在菜单中选择“Rules”->“Automatic Breakpoint”->“Before Requests”,这种方式会截断所有Request请求. 2.浏览器打开站点, ...