文档章节

二十、python 怎么分割字符串,保证结果中不含有空格

ssshen
 ssshen
发布于 2018/02/28 16:21
字数 547
阅读 32
收藏 0

最近遇到一个问题,怎么来对一个字符串去重? 我的思路是1.先分割字符串;2.然后使用set去重;3.用join连接起来。 那就引入了另一个问题:怎么分割字符串来保证结果中不包含空格?当然有很笨的方法,本篇主要谈论有没有一种更简单的方法?

首先,先来看一下需要分割的字符串

# 张三;李四;王五;张三;李四
bbb = u';\u5f20\u4e09;\u674e\u56db;\u738b\u4e94;\u5f20\u4e09;\u674e\u56db;'

接下来,按照常规的方法,使用str.split()或re.split()分割并组合字符串

print 'bbb: %s' % bbb
ccc = bbb.split(';')
print 'ccc: %s' % ccc
print 'remove duplicate: %s' % set(ccc)
print 'concat str: %s' % ';'.join(set(ccc))

输出结果:

bbb: ;张三;李四;王五;张三;李四;
ccc: [u'', u'\u5f20\u4e09', u'\u674e\u56db', u'\u738b\u4e94', u'\u5f20\u4e09', u'\u674e\u56db', u'']
remove duplicate: set([u'', u'\u5f20\u4e09', u'\u674e\u56db', u'\u738b\u4e94'])
concat str: ;张三;李四;王五

可以看到分割结果中包含空格,直接影响了最后的结果。如果想保证结果正确,一种方法是:在拆分前去掉bbb开头和结尾的“;”;一种方法是去掉ccc中的空格元素。两种方法都需要写多余的代码,不符合python,大道至简的思想,^_^

下面看一下,比较简便的解决方法

from string import maketrans

print 'bbb: %s' % bbb
table = maketrans(';', ' ')
ccc = bbb.encode('utf-8').translate(table)
ccc = ccc.decode('utf-8')
print 'ccc: %s' % ccc
print 'split ccc: %s' % ccc.split()
l = set(ccc.split())
print 'remove duplicate: %s' % l
print 'concat str: %s' % ';'.join(l)

输出结果:

bbb: ;张三;李四;王五;张三;李四;
ccc:  张三 李四 王五 张三 李四 
split ccc: [u'\u5f20\u4e09', u'\u674e\u56db', u'\u738b\u4e94', u'\u5f20\u4e09', u'\u674e\u56db']
remove duplicate: set([u'\u5f20\u4e09', u'\u674e\u56db', u'\u738b\u4e94'])
concat str: 张三;李四;王五

需要注意的是,在python 2.X中,如果bbb为unicode执行 ccc = bbb.translate(table)会抛出以下异常 TypeError: character mapping must return integer, None or unicode 需要转码为str才可以,在python3.x中没有这个问题。

参考文档: http://blog.csdn.net/luke2834/article/details/54588231 http://www.jb51.net/article/66353.htm http://blog.csdn.net/vickyrocker1/article/details/50952095 https://stackoverflow.com/questions/20849805/python-hmac-typeerror-character-mapping-must-return-integer-none-or-unicode

© 著作权归作者所有

ssshen
粉丝 2
博文 34
码字总数 12481
作品 0
海淀
程序员
私信 提问
Python 字符串操作(string替换、删除、截取、复制、连接、比较、查找、包含、大小写转

一、去空格及特殊符号 s.strip().lstrip().rstrip(',') 二、复制字符串 #strcpy(sStr1,sStr2)sStr1 = 'strcpy'sStr2 = sStr1sStr1 = 'strcpy2'print(sStr2) 三、连接字符串 #strcat(sStr1,sS......

liaojie
2014/03/18
0
0
初学Python——文件操作第二篇

前言:为什么需要第二篇文件操作?因为第一篇的知识根本不足以支撑基本的需求。下面来一一分析。 一、Python文件操作的特点 首先来类比一下,作为高级编程语言的始祖,C语言如何对文件进行操...

学霸初养成
2018/04/19
0
0
收集常用的Python 内置的各种字符串处理 函数的使用方法

收集常用的Python 内置的各种字符串处理 函数的使用方法 str='python String function' 生成字符串变量str='python String function' 字符串长度获取:len(str) 例:print '%s length=%d' % ......

铂金胖子
2013/02/09
0
0
[雪峰磁针石博客]python代码风格指南(PEP8中文版)

本文给出主Python版本标准库的编码约定。CPython的C代码风格参见PEP7。 本文和PEP 257 文档字符串标准改编自Guido最初的《Python Style Guide》, 并增加了Barry的GNU Mailman Coding Style ...

磁针石
2018/08/21
0
0
Python Split函数的用法总结(持续更新中。。。)

字符串的split用法 说明: Python中没有字符类型的说法,只有字符串,这里所说的字符就是只包含一个字符的字符串!!! 这里这样写的原因只是为了方便理解,仅此而已。 由于敢接触Python,所...

赵西元
2013/07/23
0
3

没有更多内容

加载失败,请刷新页面

加载更多

优雅的关闭Spring Boot

优雅的关闭Spring Boot 1、实现 TomcatConnectorCustomizer 接口拿到Tomcat的连接获取 Tomcat连接池 2、实现 ApplicationListener<ContextClosedEvent> 监听服务器关闭事件,注册JVM钩子函数...

sowhat
今天
2
0
Python3-Web开发

简介 Web开发框架 什么是Web框架? Web应用程序框架或简单的Web框架表示一组库和模块,使Web应用程序开发人员能够编写应用程序,而不必担心协议,线程管理等低级细节。 virtualenv是一个虚拟...

wuxinshui
今天
3
0
使用技媒体实践编写发布博客

技媒体实践博客 CSDN OSChina 知乎 简书 思否 掘金 51CTO

晨猫
今天
2
0
Lucene

1、什么是全文检索 数据分类 我们生活中的数据总体分为两种:结构化数据和非结构化数据。 结构化数据:指具有固定格式或有限长度的数据,如数据库,元数据等。 非结构化数据:指不定长或无固...

榴莲黑芝麻糊
昨天
5
0
python到setuptools、pip工具的安装

python安装 基础开发库   apt-get install gcc  apt-get install openssl libssl-dev 安装数据库和开发库   apt-get install mysql-server libmysqld-dev python环境   下载地址...

问题终结者
昨天
6
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部