#如何将一个字符串分割成多个字段,但是分隔符并不固定
line = ‘asdf fjdk; afed, fjek,asdf, foo’
import re
#按照;和,分割
print(re.split(’[;,]’,line))
#按照;和,空格分割
print(re.split(’[;,\s]’,line))

2、字符串开头和结尾匹配
filename = ‘spam.txt’
filename.endswith(’.txt’)
filename.startswith(‘file’)
#或许判断字符串是以什么开头以什么结尾
#这些在使用python对fasta文本处理中经常使用
line = ‘>hello python !’
line.startswith(’>’)
line.endswith(’!’)
#如果想检查多个匹配呢,可以把需要匹配的放入一个元组中
a=[‘adg!’,‘yuh&’,‘dhye>’,‘husf<’]
[i for i in a if i.endswith((’!’, ‘<’))]

3、shell通配符匹配文本字符串,主要是使用fnmatch库中得fnmatch和fnmatchcase函数
from fnmatch import fnmatch,fnmatchcase
#第一个原字符串,第二个是匹配以.txt结尾(条件)
fnmatch(‘foo.txt’, ‘.txt’)
fnmatch(‘foo.txt’, ‘?oo.txt’)
fnmatch(‘Dat45.csv’, 'Dat[0-9]
’)
names = [‘Dat1.csv’, ‘Dat2.csv’, ‘config.ini’, ‘foo.py’]
[name for name in names if fnmatch(name, ‘Dat*.csv’)]
[‘Dat1.csv’, ‘Dat2.csv’]

4、匹配和搜索特定模式的文本
#匹配字面字符串
str.find() , str.endswith() , str.startswith()
text = ‘yeah, but no, but yeah, but no, but yeah’
#匹配,如a!=abc
text == ‘yeah’
#匹配开头是yeah
text.startswith(‘yeah’)
#匹配结尾为no
text.endswith(‘no’)
#查找特定字符,并返回第一次出现no的位置
text.find(‘no’)

#正则
模式 描述
^ 匹配字符串的开头
$ 匹配字符串的末尾。
. 匹配任意字符,除了换行符,当re.DOTALL标记被指定时,则可以匹配包括换行符的任意字符。
[…] 用来表示一组字符,单独列出:[amk] 匹配 ‘a’,‘m’或’k’
[^…] 不在[]中的字符:[^abc] 匹配除了a,b,c之外的字符。
re* 匹配0个或多个的表达式。
re+ 匹配1个或多个的表达式。
re? 匹配0个或1个由前面的正则表达式定义的片段,非贪婪方式
re{ n} 精确匹配 n 个前面表达式。例如, o{2} 不能匹配 “Bob” 中的 “o”,但是能匹配 “food” 中的两个 o。
re{ n,} 匹配 n 个前面表达式。例如, o{2,} 不能匹配"Bob"中的"o",但能匹配 “foooood"中的所有 o。“o{1,}” 等价于 “o+”。“o{0,}” 则等价于 “o*”。
re{ n, m} 匹配 n 到 m 次由前面的正则表达式定义的片段,贪婪方式
a| b 匹配a或b
(re) 匹配括号内的表达式,也表示一个组
(?imx) 正则表达式包含三种可选标志:i, m, 或 x 。只影响括号中的区域。
(?-imx) 正则表达式关闭 i, m, 或 x 可选标志。只影响括号中的区域。
(?: re) 类似 (…), 但是不表示一个组
(?imx: re) 在括号中使用i, m, 或 x 可选标志
(?-imx: re) 在括号中不使用i, m, 或 x 可选标志
(?#…) 注释.
(?= re) 前向肯定界定符。如果所含正则表达式,以 … 表示,在当前位置成功匹配时成功,否则失败。但一旦所含表达式已经尝试,匹配引擎根本没有提高;模式的剩余部分还要尝试界定符的右边。
(?! re) 前向否定界定符。与肯定界定符相反;当所含表达式不能在字符串当前位置匹配时成功
(?> re) 匹配的独立模式,省去回溯。
\w 匹配字母数字及下划线
\W 匹配非字母数字及下划线
\s 匹配任意空白字符,等价于 [\t\n\r\f].
\S 匹配任意非空字符
\d 匹配任意数字,等价于 [0-9].
\D 匹配任意非数字
\A 匹配字符串开始
\Z 匹配字符串结束,如果是存在换行,只匹配到换行前的结束字符串。
\z 匹配字符串结束
\G 匹配最后匹配完成的位置。
\b 匹配一个单词边界,也就是指单词和空格间的位置。例如, ‘er\b’ 可以匹配"never” 中的 ‘er’,但不能匹配 “verb” 中的 ‘er’。
\B 匹配非单词边界。‘er\B’ 能匹配 “verb” 中的 ‘er’,但不能匹配 “never” 中的 ‘er’。
\n, \t, 等. 匹配一个换行符。匹配一个制表符。等
\1…\9 匹配第n个分组的内容。
\10 匹配第n个分组的内容,如果它经匹配。否则指的是八进制字符码的表达式

5、替换
str.replace(’’,’’)
#将yeah替换成yep
text = ‘yeah, but no, but yeah, but no, but yeah’
text.replace(‘yeah’, ‘yep’)

6、删掉不需要的字符
strip() 方法能用于删除开始或结尾的字符。 lstrip() 和 rstrip() 分别从左和从右执行删除操作。这里需要注意的是在去除特定字符之后一般需要重新赋值变量
s = ’ hello world \n’
s.strip()
s.lstrip()
‘hello world \n’
s.rstrip()

t = ‘-----hello=====’
t.lstrip(’-’)
t.strip(’-=’)

python-字符串和文本相关推荐

  1. python字符串与文本处理技巧(3):字符剔除、字符对齐、字符拼接、字符插入变量

    1. 删除字符串中不需要的字符 去掉文本字符串开头,结尾或者中间不想要的字符,比如空白. strip() & Istrip() & rstrip() strip() 方法能用于删除开始 ...

  2. python字符串与文本处理技巧(2):大小写敏感搜索、最短匹配、多行匹配、Unicode标准化

    1. 字符串忽略大小写的搜索替换 re.findall(patter, string, flags=re.IGNORECASE) 当我们需要忽略字符串中的字母大小写进行模式搜索时可以采用如下方案: i ...

  3. python字符串与文本处理技巧(1):分割、首尾匹配、模式搜索、匹配替换

    1. 字符串分割 将一个字符串分割为多个字段,但是分隔符(还有周围的空格)并不是固定的. str.split() 和 re.split() string 对象的 split() 方法只适应于非常简单的 ...

  4. python字符串与文本处理教程

    每个程序都回涉及到文本处理,如拆分字符串.搜索.替换.词法分析等.许多任务都可以通过内建的字符串方法来轻松解决,但更复杂的操作就需要正则表达式来解决. 1.针对任意多的分隔符拆分字符串 In [1]: ...

  5. python字符串与文本处理技巧(4): 格式化输出、令牌解析、串上串

    1. 以指定列宽格式化字符串 很多情况下,我们有一些长字符串,想以指定的列宽将它们重新格式化. textwarp() import textwrap import oss = "Look i ...

  6. python字符串转成0x字节组_python高级(四)—— 文本和字节序列(编码问题)

    本文主要内容 字符 字节 结构体和内存视图 字符和字节之间的转换--编解码器 BOM鬼符 标准化Unicode字符串 Unicode文本排序 字符 '''字符编码问题是经常困扰python编程人员的问 ...

  7. python文本字符分析、编写程序接收字符串_python 文本分析Python编程中字符串和列表的基本知识讲解...

    Python 字符串 字符串是 Python 中最常用的数据类型.我们可以使用引号来创建字符串. 创建字符串很简单,只要为变量分配一个值即可.例如: var1 = 'Hello World!' var ...

  8. Python实战之字符串和文本处理

    写在前面 博文为<Python Cookbook>读书后笔记整理 涉及内容包括: 使用多个界定符分割字符串 字符串开头或结尾匹配,用Shell通配符匹配字符串 字符串匹配和搜索和替换(忽略 ...

  9. 零基础学python编程思维---Task2 数学运算、字符串和文本、列表

    Task2 数学运算.字符串和文本.列表 一.基础部分 1.实现第一行代码和认识注释 print('hello world') 注释是由# 加相关备注,其目的就是其他开发者能够轻松的了解代码,注释不影 ...

  10. 整理网站页面CV的《长恨歌》文本,python字符串基础知识实战。

    [点击此处跳转笔记正文] Python 官网:https://www.python.org/ Free:大咖免费"圣经"教程< python 完全自学教程>,不仅仅是基 ...

最新文章

  1. 简历写的好,就赢了90%的人了
  2. LaTex中的documentclass{type}应该填什么
  3. 找出最具竞争力的子序列_力扣300——最长上升子序列
  4. 《天天数学》连载14:一月十四日
  5. Java多线程学习四十二:有哪些解决死锁问题的策略和哲学家就餐问题
  6. OpenCV中cvLoadImage()函数和cvCreateImage()函数的异同之处!
  7. 深度学习模型提升模型效果的常见方法
  8. JAVA收到网络报文的IP是::1,怎么回事?
  9. class反编译软件,超级好用
  10. c语言逻辑运算符的作用,C语言逻辑运算符知识整理
  11. 第五太阳纪终结,人类文明新开端?
  12. 基于Python的搜索引擎检索日志数据分析
  13. Netty常用招式——ChannelHandler与编解码
  14. 身份证复印件一定要加签注 否则可能吃大亏!
  15. Flutter For App——一个简单的豆瓣APP
  16. python多功能文本编辑器_多功能高效 批处理式 Python IDE Python 编辑器 新时代新理念...
  17. 辗转相除以及辗转相减法
  18. 新唐N76e003 单片机程序分析
  19. 右键计算机管理显示目录名称无效,电脑资源管理器的右键上下文菜单打不开的两种解决办法...
  20. Ruby编程语言(The Ruby Programming Language) 中文版

热门文章

  1. 建设微服务API网关的一些实践
  2. 一个搜索需求搞垮微服务
  3. 分布式动态配置后浪推前浪 -- Nacos
  4. 计算机视觉及深度学习_面试问题(一)
  5. Spark Streaming与Kafka Streaming对比
  6. 程序员:做测试开发每天忙于业务,看不到希望
  7. 如何在微服务架构下进行数据设计?
  8. 7个问题,直击管理的本质
  9. html js文本框文字列出,js实现文本框中输入文字页面中div层同步获取文本框内容的方法...
  10. 复杂系统是如何挂掉的