广告
返回顶部
首页 > 资讯 > 后端开发 > Python >Python字符串处理实例详解
  • 361
分享到

Python字符串处理实例详解

字符串详解实例 2022-06-04 18:06:19 361人浏览 八月长安

Python 官方文档:入门教程 => 点击学习

摘要

Python字符串处理实例详解 一、拆分含有多种分隔符的字符串 1.如何拆分含有多种分隔符的字符串 问题: 我们要把某个字符串依据分隔符号拆分不同的字段,该字符串包含多种不同的分隔符,例如: s = "

Python字符串处理实例详解

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

1.如何拆分含有多种分隔符的字符串

问题: 我们要把某个字符串依据分隔符号拆分不同的字段,该字符串包含多种不同的分隔符,例如:


s = "ab;cd|efg|hi,jkl|mntopq;rst,uvwtxyz"

其中;,|,t 都是分隔符号,如何处理?

方法一: 连续使用str.split()方法,每次处理一种分隔符号


s = "ab;cd|efg|hi,jkl|mntopq;rst,uvwtxyz"

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

print mySplit(s,';|,t')

输出:
['ab', 'cd', 'efg', 'hi', 'jkl', 'mn', 'opq', 'rst', 'uvw', 'xyz']

方法二: 使用正则表达式的re.split()方法,一次性拆分字符串


import re

s = "ab;cd|efg|hi,jkl|mntopq;rst,uvwtxyz"

print re.split(r'[;|,t]+',s)

输出:
['ab', 'cd', 'efg', 'hi', 'jkl', 'mn', 'opq', 'rst', 'uvw', 'xyz']

二、调整字符串中文本格式

1. 如何判断字符串a是否以字符串b开头或结尾

问题:某文件系统目录下有一系列文件:a.py,quicksort.c,stack.cpp,b.sh , 编写程序给其中所有.sh文件和.py文件加上用户可执行权限?

解决方案: 使用字符串中的str.startswith()和end.startswith()方法 (注意:多个匹配时参数使用元组)


In [1]: import os

# 列出当前目录以.sh和以.py结尾的文件
In [2]: [name for name in os.listdir('.') if name.endswith(('.py','.sh'))]
Out[2]: ['b.sh', 'a.py']

In [3]: import stat

# 查看 a.py 文件权限
In [4]: os.stat('a.py').st_mode
Out[4]: 33204

# 把文件权限转换成8进制,即为平常看到的权限
In [5]: oct(os.stat('a.py').st_mode)
Out[5]: '0100664'

# 更改文件权限,添加一个可执行权限
In [6]: os.chmod('a.py',os.stat('a.py').st_mode | stat.S_IXUSR)

In [7]: ll
total 0
-rwxrw-r-- 1 yangyang 0 5月 9 14:48 a.py*
-rw-rw-r-- 1 yangyang 0 5月 9 14:48 b.sh
-rw-rw-r-- 1 yangyang 0 5月 9 14:48 quicksort.c
-rw-rw-r-- 1 yangyang 0 5月 9 14:48 stack.cpp

2.如何对字符串中文本的格式进行调整

问题: 某软件的log文件,其中日期格式为“yyyy-mm-dd”:


2017-05-08 09:12:48 status half-configured passwd:amd64 1:4.2-3.1ubuntu5.2
2017-05-08 09:12:48 status installed passwd:amd64 1:4.2-3.1ubuntu5.2
2017-05-08 09:12:48 status unpacked passwd:amd64 1:4.2-3.1ubuntu5.2
2017-05-08 09:12:48 status unpacked passwd:amd64 1:4.2-3.1ubuntu5.2
2017-05-08 09:12:48 status half-configured passwd:amd64 1:4.2-3.1ubuntu5.2
2017-05-08 09:12:48 status installed passwd:amd64 1:4.2-3.1ubuntu5.2
2017-05-08 09:12:48 startup packages configure
09:12:48 startup packages configure

我们想把其中日期改为美国日期的格式"mm/dd/yyyy",2017-05-08 ==> 05/08/2017 ,应如何处理?

解决方案:使用正则表达式re.sub()方法做字符串替换,利用正则表达式的捕获组捕获每个部分内容,在字符串中调整各个组的捕获顺序。


In [1]: import re

In [2]: log = open('/var/log/dpkg.log').read()
# (d{4}) 匹配到4个数字为一个捕获组,其顺序为1。故后面替换用1放到最后,r是为了防止字符串被转义
In [3]: print re.sub('(d{4})-(d{2})-(d{2})',r'2/3/1', log)
05/08/2017 09:12:48 status unpacked passwd:amd64 1:4.2-3.1ubuntu5.2
05/08/2017 09:12:48 status unpacked passwd:amd64 1:4.2-3.1ubuntu5.2
05/08/2017 09:12:48 status unpacked passwd:amd64 1:4.2-3.1ubuntu5.2
05/08/2017 09:12:48 status half-configured passwd:amd64 1:4.2-3.1ubuntu5.2
05/08/2017 09:12:48 status installed passwd:amd64 1:4.2-3.1ubuntu5.2
05/08/2017 09:12:48 startup packages configure

# 也可以为每个捕获组起个名称,而不使用默认顺序来处理
In [5]: print re.sub('(?P<year>d{4})-(?P<month>d{2})-(?P<day>d{2})',r'g<month>/g<day>/g<year>', log)
05/08/2017 09:12:48 status unpacked passwd:amd64 1:4.2-3.1ubuntu5.2
05/08/2017 09:12:48 status unpacked passwd:amd64 1:4.2-3.1ubuntu5.2
05/08/2017 09:12:48 status unpacked passwd:amd64 1:4.2-3.1ubuntu5.2
05/08/2017 09:12:48 status half-configured passwd:amd64 1:4.2-3.1ubuntu5.2
05/08/2017 09:12:48 status installed passwd:amd64 1:4.2-3.1ubuntu5.2
05/08/2017 09:12:48 startup packages configure

三、字符串拼接

1.如何将多个小字符串拼接成一个大的字符串

问题:在程序中我们将各个参数按次序收集到列表中: ["<0112>", "<32>","<1024x768>","<60>" ],要把各个参数拼接成数据报进行发送"<0112><32><1024x768><60>"

解决方案:

方法一:迭代列表,连续使用“+”操作依次拼接每一个字符串


In [1]: pl = ["<0112>", "<32>","<1024x768>","<60>" ]

In [2]: s = ''

# 这种方法会产生许多临时结果,会造成资源的浪费
In [3]: for p in pl:
 ...:  s = s + p
 ...:  print s
 ...:  
<0112>
<0112><32>
<0112><32><1024x768>
<0112><32><1024x768><60>
In [4]: s
Out[4]: '<0112><32><1024x768><60>'

方法二:使用str.join()方法,更加快速的拼接列表中所有字符串


In [5]: ''.join(pl)
Out[5]: '<0112><32><1024x768><60>'

有个列表l = ['abc',123,45,'xyz'],如何让123和45以字符串的方式拼接


In [6]: l = ['abc',123,45,'xyz']

# 使用生成器表达式,开销比列表表达式小
In [7]: (str(x) for x in l)
 ...: 
Out[7]: <generator object <genexpr> at 0x7fe3cadef550>

In [8]: ''.join(str(x) for x in l)
Out[8]: 'abc12345xyz'

四、字符串居中对齐

1.如何对字符串进行左、右、居中对齐

问题: 某个字典存储了一系列属性值


{
 "loDist":100.0,
 "smartCull":0.04,
 "farclip":477
}

在程序中想以工整的格式进行输出,如何处理?

解决方案:

方法一: 使用字符串的str.ljust(),str.rjust(),str.center()进行,右,居中对齐

方法二: 使用format方法,传递类似'<20','>20','^20'参数完成同样任务


In [1]: s = 'abc'

In [2]: s.ljust(20)
Out[2]: 'abc     '

In [3]: s.ljust(20,'=')
Out[3]: 'abc================='

In [4]: s.center(20)
Out[4]: '  abc   '

In [5]: fORMat(s,'<20')
Out[5]: 'abc     '

In [6]: d = {
 ...:  "loDist":100.0,
 ...:  "smartCull":0.04,
 ...:  "farclip":477
 ...: }

In [7]: d.keys()
Out[7]: ['loDist', 'smartCull', 'farclip']

In [8]: w =max(map(len,d.keys()))

In [9]: for k in d:
 ...:  print k.ljust(w),':',d[k]
 ...:  
loDist : 100.0
smartCull : 0.04
farclip : 477

2.去掉不需要的字符串

问题:

1.过滤掉用户输入中前后多余的空白字符: ' nick@gmail.com '

2.过滤某windows下编辑文本中的'r': 'hello worldrn'

3.去掉文本中的unicode组合符号(音调):u'zǒu'

解决方案:

方法一: 字符串strip(),lstrip(),rstrip()方法去掉字符串两端字符

方法二:删除单个固定位置的字符,可以使用切片+拼接的方式

方法三:字符串的replace方法或正则表达式re.sub()方法删除任意位置字符

方法四:字符串translate()方法,可以同时删除多种不同字符


In [1]: s = ' abc 123 '

In [2]: s.strip()
Out[2]: 'abc 123'

In [3]: s.lstrip()
Out[3]: 'abc 123 '

In [4]: s = '-----ab+++++'

In [5]: s.strip('-+')
Out[5]: 'ab'

In [6]: s = 'abc:123'

In [7]: s[:3]+s[4:]
Out[7]: 'abc123'

In [8]: s = 'tabct123txyz'
# 去除t
In [9]: s.replace('t','')
Out[9]: 'abc123xyz'

In [10]: s = 'tabct123txyzropqr'

In [11]: import re
# 去除tr
In [12]: re.sub('[tr]','',s)
Out[12]: 'abc123xyzopq'

In [13]: s = 'abcrefgn2342t'
# 去除trn
In [14]: s.translate(None,'trn')
Out[14]: 'abcefgx9c2'

In [15]: u = u'zǒu'

In [16]: u
Out[16]: u'zu01d2u'

In [17]: print u.translate({0x01d2:None})
zu

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

--结束END--

本文标题: Python字符串处理实例详解

本文链接: https://www.lsjlt.com/news/13255.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Python字符串处理实例详解
    Python字符串处理实例详解 一、拆分含有多种分隔符的字符串 1.如何拆分含有多种分隔符的字符串 问题: 我们要把某个字符串依据分隔符号拆分不同的字段,该字符串包含多种不同的分隔符,例如: s = "...
    99+
    2022-06-04
    字符串 详解 实例
  • Cython处理C字符串的示例详解
    目录楔子创建 C 字符串引用计数陷阱strlenstrcpystrcatstrcmpsprintf动态申请字符串内存memsetmemcpymemmovememcmp小结楔子 在介绍...
    99+
    2023-01-06
    Cython处理C字符串 Cython处理字符串 Cython 字符串
  • python 遍历字符串(含汉字)实例详解
    python 遍历字符串(含汉字)实例详解 s = "中国china" for j in s: print j 首先一个,你这个'a'是什么编码?可能不是你所想的gbk >>>...
    99+
    2022-06-04
    汉字 遍历 字符串
  • C++字符串的处理详解
    目录字符数组总结字符数组 双引号引起的a占两个字符,包含“\0”。 字符串处理函数 连接的时候,str2中的1替换str1中的‘\0'; 比较函数按照str...
    99+
    2022-11-12
  • python 字符串详解
    目录一、字符串:二、使用:(1)空字符串和 len( ) 函数(2)转译字符( \ )(3)字符串拼接(4)字符串复制(5)不换行打印(6)从控制台读取参数:(7...
    99+
    2022-11-12
  • Python 基础之字符串string详解及实例
    Python字符串(string) 详解 及 代码 Python的字符串可以使用单引号('), 双引号("), 三引号('''); 三引号(''')里面, 可以添加单引号和双引号, 也可以通过转义序列()添...
    99+
    2022-06-04
    字符串 详解 实例
  • Oracle字符串拆分实例详解
    目录oracle字符串拆分1. 使用regexp_substr()函数1.1 拆分aaa,bbb,ccc1.2 拆分aaa;bbb;ccc1.3 level作用2. 在oracle中实现mysql的find_i...
    99+
    2023-04-03
    oracle 字符串切割 oracle字符串拆分 oracle拆分函数
  • python字符串的多行输出的实例详解
    1、字符串的每行末尾使用 \ 续行 以多行的形式书写字符串,每行的末尾使用 \ 续行。需要注意输出内容为一行。 >>> string = '第一行\ … 第二行\ … 第三行' >>...
    99+
    2022-06-02
    python 字符串 多行输出
  • python 查找字符串是否存在实例详解
    python中查找指定的字符串的方法如下: code #查询 def selStr(): sStr1 = 'jsjtt.com' sStr2 = 'com' #index查询某个字符串,返...
    99+
    2022-06-04
    字符串 是否存在 详解
  • Shell实现字符串处理的方法详解
    目录大小写转化获取字符串长度替换整体替换部分替换截取补充大小写转化 # 把变量中的第一个字符换成大写 ${test^} # 把变量中的所有小写字母,全部替换为大写 ${test^^} # 把变量中的第一个字符换成小写...
    99+
    2022-09-22
  • java 字符串截取的实例详解
    java 字符串截取的实例详解题目 在java中,字符串“abcd”与字符串“ab你好”的长度是一样,都是四个字符。 但对应的字节数不同,一个汉字占两个字节。 定义一个方法,按照指定的字节数来取子串。 如:对于“ab你好”,如果取三个字节,...
    99+
    2023-05-31
    java 字符串 截取
  • C# String字符串案例详解
    string是一种很特殊的数据类型,它既是基元类型又是引用类型,在编译以及运行时,.Net都对它做了一些优化工作,正式这些优化工作有时会迷惑编程人员,使string看起来难以琢磨。这...
    99+
    2022-11-12
  • Python数据类型详解之字符串、数字实例分析
    这篇文章主要介绍“Python数据类型详解之字符串、数字实例分析”,在日常操作中,相信很多人在Python数据类型详解之字符串、数字实例分析问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Python数据类型详...
    99+
    2023-06-30
  • python数据清洗系列之字符串处理详解
    前言 数据清洗是一项复杂且繁琐(kubi)的工作,同时也是整个数据分析过程中最为重要的环节。有人说一个分析项目80%的时间都是在清洗数据,这听起来有些匪夷所思,但在实际的工作中确实如此。数据清洗的目的有两个...
    99+
    2022-06-04
    字符串 详解 数据
  • python字符串处理以及字符串格式化
    一、python字符串处理 目录: 1.算长度(len),某个元素出现的次数(count) 2.切片   [ ],repr:把不可见字符显示出来 3.查找 #find,rfind从右边查找 4.字符串和列表之间的转换(split,join...
    99+
    2023-01-30
    字符串 python
  • Python字符串格式化实例讲解
    目录一、%-formatting二、str.format()三、f-Strings在Python 3.6之前,有两种将Python表达式嵌入到字符串文本中进行格式化的主要方法:%-f...
    99+
    2022-11-11
  • Python字符串,列表,字典和集合实例处理分析
    今天小编给大家分享一下Python字符串,列表,字典和集合实例处理分析的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。1.如何...
    99+
    2023-07-02
  • PHP中多字节字符串操作实例详解
    目录前言字符串操作 字符串正则操作 字符串编码转换 HTTP 参数操作 其它属性查看 总结 前言 什么是多字节的字符串操作呢?其实不少的同学可能都已经使用过了,但我们还是要从最基础的...
    99+
    2022-11-12
  • Python处理字符串的常用函数实例总结
    目录前言 字符串都有哪些操作?第一类判断识别字符串第二类字符串编辑的操作第三类:字符串跟字节串的互转总结前言 今天我们说了字符串的基础,格式化,这次我们讲解字符串的常用函数...
    99+
    2022-11-12
  • 详解Python字符串对象的实现
    PyStringObject 结构体 Python 中的字符串对象在内部对应一个名叫 PyStringObject 的结构体。“ob_shash” 对应字符串经计算过的 hash值, “ob_sval” 指...
    99+
    2022-06-04
    字符串 详解 对象
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作