使用多个界定符分割字符串

line = 'asdf fjdk; afed, fjek,asdf, foo'

import re

# line = re.split(r'[;,\s]\s*',line)# print(line)# ['asdf', 'fjdk', 'afed', 'fjek', 'asdf', 'foo']

"""当你使用 re.split() 函数时候,需要特别注意的是正则表达式中是否包含一个括号捕获分组。如果使用了捕获分组,那么被匹配的文本也将出现在结果列表中。"""

# line = re.split('(;|,|\s)\s*',line)# print(line)#['asdf', ' ', 'fjdk', ';', 'afed', ',', 'fjek', ',', 'asdf', ',', 'foo']#使用分组会捕获匹配的分割字符添加到列表中

value = line[::2]print(value)#['asdf', 'fjdk', 'afed', 'fjek', 'asdf', 'foo']#使用切片步长来获取被分割的元素

delimiters = line[1::2]print(delimiters)#[' ', ';', ',', ',', ',']#使用切片获取分隔符

print(list(zip(value,delimiters)))#[('asdf', ' '), ('fjdk', ';'), ('afed', ','), ('fjek', ','), ('asdf', ',')]#使用zip函数把分隔符和被分割的元素组成元组再用生成器表达式拼接成字符串

values = ''.join(v+delimiter for v,delimiter in zip(value,delimiters))print(values)#asdf fjdk;afed,fjek,asdf,#把数据合并成了字符串

line = re.split('(?:,;|,|\s)\s*',line)print(line)#['asdf', 'fjdk;', 'afed', 'fjek', 'asdf', 'foo']#如果一定要使用分组的形式分割数据,又不想保留分隔符可以使用?:丢弃分隔符

字符串开头或结尾匹配
"""检查字符串开头或结尾的一个简单方法是使用 str.startswith() 或者是 str.endswith() 方法。"""# filename = 'spam.txt'# print(filename.endswith('.txt'))# #True# print(filename.startswith('file:'))# #False# url = 'http://www.python.org'# print(url.startswith('http:'))#True

import osfilenames = os.listdir('.')print(filenames)#['admin.py', 'apps.py', 'migrations', 'models.py', 'tests.py', 'urls.py', 'views.py', '__init__.py', '__pycache__']filename = [filename for filename in filenames if filename.endswith('.py')]print(filename)#['admin.py', 'apps.py', 'models.py', 'tests.py', 'urls.py', 'views.py', '__init__.py']print(any(name.endswith('py') for name in filename))#Trueprint(all(name.endswith('py') for name in filename))#True

from urllib import request

def read_data(name):    if name.startswith(('http','https','ftp'),):        return request.urlopen(name).read()    else:        with open(name) as f:            return f.read()

print(read_data('https://www.baidu.com'))

"""这个方法中必须要输入一个元组作为参数。如果你恰巧有一个 list 或者 set 类型的选择项,要确保传递参数前先调用 tuple() 将其转换为元组类型。"""

choices = ['http:', 'ftp:']url = 'http://www.python.org'

print(url.startswith(tuple(choices)))#True

#也可以使用re的match模块实现检测

import reprint(re.match("(http:|https|ftp:)",url))#<re.Match object; span=(0, 5), match='http:'>

"""普通数据聚合相结合的时候 startswith() 和endswith() 方法是很不错的。"""

print(any(name.endswith(('.c','.h')) for name in os.listdir('.')))

#Falseprint(any(name.endswith(('.py','.h')) for name in os.listdir('.')))#True

转载于:https://www.cnblogs.com/louzi/p/10387729.html

python cook读书笔记第2章字符串和文本相关推荐

  1. C语言入门经典读书笔记 ----第六章 字符串和文本的应用

    1.什么是字符串 字符串常量的例子非常常见,字符串常量是放在一对双引号中的一串字符或符号,一对双引号之间的任何内容都会被编译器视为字符串,包括特殊字符和嵌入的空格.以下是使用字符串的例子: print ...

  2. 《Java编程思想》读书笔记 第十三章 字符串

    <Java编程思想>读书笔记 第十三章 字符串 不可变String String对象是不可变的,每一个看起来会修改String值的方法,实际上都是创建一个全新的String对象,以及包含修 ...

  3. python基础教程读书笔记——第三章 字符串

    第三章 字符串 摘要: %s , $x , find()  , join() , split() , lower() , title() , strip() 1.字符串格式化 format = &qu ...

  4. python3for metro_Fluent Python 译本 读书笔记 第5章 一等函数

    这是学习<流畅的Python>的第二天,今天希望把这一章看完,之所以跳过第二部分,是因为我对第三部分兴趣更多一些,之后再看第二部分吧.笔记不是对书的重复,只是把我接触到的任何不是特别熟悉的 ...

  5. 《C++ Primer》读书笔记—第三章 字符串、向量和数组

    声明: 文中内容收集整理自<C++ Primer 中文版 (第5版)>,版权归原书所有. 学习一门程序设计语言最好的方法就是练习编程 这一部分内容比较简单. string表示可变长的字符序 ...

  6. 《Python从入门到实践》读书笔记——第六章 字典

    <Python从入门到实践>读书笔记--第六章 字典 1. 一个简单的字典 alien_0 = {'color': 'green', 'points': 5}print(alien_0[' ...

  7. 《Python从入门到实践》读书笔记——第五章 if语句

    <Python从入门到实践>读书笔记--第五章 if语句 1. 一个简单示例 cars = ['audi', 'bwm', 'subaru', 'toyota']for car in ca ...

  8. 黑帽python第二版(Black Hat Python 2nd Edition)读书笔记 之 第一章 配置python环境

    黑帽python第二版(Black Hat Python 2nd Edition)读书笔记 之 第一章 配置python环境 文章目录 黑帽python第二版(Black Hat Python 2nd ...

  9. Machine Learning in Action 读书笔记---第4章 基于概率论的分类方法:朴素贝叶斯

    Machine Learning in Action 读书笔记 第4章 基于概率论的分类方法:朴素贝叶斯 文章目录 Machine Learning in Action 读书笔记 一.基于贝叶斯决策理 ...

最新文章

  1. php两个按钮左右怎么做,css布局两个button在同父标签中左右两侧分布的方法
  2. 关于MATLAB处理大数据坐标文件2017529
  3. IDEA 打可执行jar包(maven项目)
  4. Linux Mint 18.2 Sonya 将于 6 月上旬发布公测版本
  5. linux双机ssh互信方法总结
  6. uml学习之图书借阅简化用例图创建
  7. 前端之CSS第二部分属性相关
  8. 关于Myeclipse10的激活
  9. 设计模式(十八):责任链模式
  10. 原生Hadoop集群搭建过程记录
  11. 关于码云的一些基本知识_关于使用码云,GITHUB,阿里云CODE来管理代码的一些操作记录...
  12. 【软件测试系列十二】《压力测试报告模板》
  13. 谷歌浏览器为什么不能自定义安装路径?
  14. html去除背景颜色怎么设置,word文档背景颜色怎么去掉,文档背景颜色怎么去掉
  15. 2015年8月18日工作日志--------赵鑫
  16. 将Visual Leak Detector集成至Visual Studio 2019
  17. 什么是长尾关键词?长尾关键词优化方法和技巧
  18. LightProxy 无线端代理iOS,安装验证证书后仍不生效
  19. python网页转PDF
  20. 技术资源:国内知名技术网站网址

热门文章

  1. 如何在linux环境下安装kvm,如何在Linux发行版上安装和配置KVM和Open vSwitch?
  2. mysql .pdb是什么文件_计算广告算法到底要做什么?
  3. pdf打印机安装程序_CAD快速出打印PDF格式文件
  4. 怎么通过media foundation将图像数据写入虚拟摄像头_千倍成本压缩!特斯拉开发虚拟激光雷达,替代最贵自动驾驶传感器...
  5. c语言self用法,C/C++知识点之Self Numbers C语言 UVA640
  6. python不能创建字典的是_用Python创建带有重复键的字典
  7. java url下载ics_使用Microsoft Graph API处理外部(Internet / .ics)日历URL
  8. MySQL面试准备——64页pdf
  9. leetcode 1005. K 次取反后最大化的数组和 思考分析
  10. Java FileInputStream close()方法与示例