Python cookbook(字符串与文本)针对任意多的分隔符拆分字符串操作


本文摘自php中文网,作者不言,侵删。

这篇文章主要介绍了Python cookbook(字符串与文本)针对任意多的分隔符拆分字符串操作,结合实例形式分析了Python使用split()及正则表达式进行字符串拆分操作相关实现技巧,需要的朋友可以参考下

本文实例讲述了Python针对任意多的分隔符拆分字符串操作。分享给大家供大家参考,具体如下:

问题:将分隔符(以及分隔符之间的空格)不一致的字符串拆分为不同的字段;

解决方案:使用更为灵活的re.split()方法,该方法可以为分隔符指定多个模式。

说明:字符串对象的split()只能处理简单的情况,而且不支持多个分隔符,对分隔符周围可能存在的空格也无能为力。

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

# example.py

#

# Example of splitting a string on multiple delimiters using a regex

import re #导入正则表达式模块

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

# (a) Splitting on space, comma, and semicolon

parts = re.split(r'[;,\s]\s*', line)

print(parts)

# (b) 正则表达式模式中使用“捕获组”,需注意捕获组是否包含在括号中,使用捕获组导致匹配的文本也包含在最终结果中

fields = re.split(r'(;|,|\s)\s*', line)

print(fields)

# (c) 根据上文的分隔字符改进字符串的输出

values = fields[::2]

delimiters = fields[1::2]

delimiters.append('')

print('value =', values)

print('delimiters =', delimiters)

newline = ''.join(v+d for v,d in zip(values, delimiters))

print('newline =', newline)

# (d) 使用非捕获组(?:...)的形式实现用括号对正则表达式模式分组,且不输出分隔符

parts = re.split(r'(?:,|;|\s)\s*', line)

print(parts)

1

2

3

4

5

6

7

8

9

>>> ================================ RESTART ================================

>>>

['asdf', 'fjdk', 'afed', 'fjek', 'asdf', 'foo']

['asdf', ' ', 'fjdk', ';', 'afed', ',', 'fjek', ',', 'asdf', ',', 'foo']

value = ['asdf', 'fjdk', 'afed', 'fjek', 'asdf', 'foo']

delimiters = [' ', ';', ',', ',', ',', '']

newline = asdf fjdk;afed,fjek,asdf,foo

['asdf', 'fjdk', 'afed', 'fjek', 'asdf', 'foo']

>>>

(代码摘自《Python Cookbook》)

相关推荐:

PythonCookbook——数据结构和算法

以上就是Python cookbook(字符串与文本)针对任意多的分隔符拆分字符串操作的详细内容,更多文章请关注木庄网络博客!!

相关阅读 >>

Python中print与return区别

Python中下划线怎么打

Python yield什么意思

Python实现输出1到1000以内的素数

Python能做什么?是什么意思?

Python如何把ascii转换为字符

疑难杂症 :Python [] 与 list() 哪个快?为什么快?快多少呢?

Python未来会进课本么

Python爬虫入门心得分享

初学Python需要有什么基础么

更多相关阅读请进入《Python》频道 >>




打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...