首页
生活笔记
技术杂谈
Python
Java
Node
Linux
其他
精选博文
给我留言
登录
热门搜索
思维导图
Chrome
思维导图
首页
生活笔记
技术杂谈
Python
Java
Node
Linux
其他
精选博文
给我留言
Python 字符串和文本
船到桥头自然沉
# 使用多个界定符分割字符串 ****问题 你需要将一个字符串分割为多个字段,但是分隔符(还有周围的空格)并不是固定的。 ****解决方案 `string` 对象的` split() `方法只适应于非常简单的字符串分割情形, 它并不允许有多个分隔符或者是分隔符周围不确定的空格。 当你需要更加灵活的切割字符串的时候,最好使用` re.split() `方法: >>> line = 'asdf fjdk; afed, fjek,asdf, foo' >>> import re >>> re.split(r'[;,\s]\s*', line) ['asdf', 'fjdk', 'afed', 'fjek', 'asdf', 'foo'] 当你使用` re.split()` 函数时候,需要特别注意的是正则表达式中是否包含一个括号捕获分组。 如果使用了捕获分组,那么被匹配的文本也将出现在结果列表中。比如,观察一下这段代码运行后的结果: >>> fields = re.split(r'(;|,|\s)\s*', line) >>> fields ['asdf', ' ', 'fjdk', ';', 'afed', ',', 'fjek', ',', 'asdf', ',', 'foo'] # 字符串开头或结尾匹配 检查字符串开头或结尾的一个简单方法是使用 `str.startswith() `或者是 `str.endswith()` 方法。比如: >>> filename = 'spam.txt' >>> filename.endswith('.txt') True >>> filename.startswith('file:') False >>> url = 'http://www.python.org' >>> url.startswith('http:') True >>> 如果你想检查多种匹配可能,只需要将所有的匹配项放入到一个元组中去, 然后传给 `startswith()` 或者` endswith() `方法: >>> import os >>> filenames = os.listdir('.') >>> filenames [ 'Makefile', 'foo.c', 'bar.py', 'spam.c', 'spam.h' ] >>> [name for name in filenames if name.endswith(('.c', '.h')) ] ['foo.c', 'spam.c', 'spam.h' >>> any(name.endswith('.py') for name in filenames) True >>>
#
Python
#
Linux
#
编程
#
算法
#
数据结构