字符串替换

题目: 给定一个英文的字符串, 要求你将其中的元音删除掉, 返回新的字符串.

例如:
"This website is for losers LOL!"  -->  "Ths wbst s fr lsrs LL!"

 

当看到这个题目的时候, 第一个想起的就是re模块的正则表达式. 不过由于最近使用过字符串的replace方法, 所以我给出的解决方法是:

 

def disemvowel(string):remove_list = ["A", "a", "E", "e", "I", "i", "O", "o", "U", "u"]    # 先列出元音列表for s in remove_list:while s in string:string = string.replace(s, "")  # 将元音字符替换为空再重新赋值回去return string

 

这样就可以不用使用re模块就完成了要求. 但是, 还有人给出了更精妙的解决方案:

 

def disemvowel(s):return s.translate(None, "aeiouAEIOU")

 

还有许多其他的解决方案, 有兴趣的可以访问:

https://www.codewars.com/kata/disemvowel-trolls/solutions/python/all/best_practice

 

这里使用了一个字符串特别的方法, translate. 而这个方法平时我都没怎么注意过, 下面是官方文档的说明:

 

S.translate(table [,deletechars]) -> stringReturn a copy of the string S, where all characters occurring
in the optional argument deletechars are removed, and the
remaining characters have been mapped through the given
translation table, which must be a string of length 256 or None.
If the table argument is None, no translation is applied and
the operation simply removes the characters in deletechars.


返回一个字符串的副本, 所以出现在可选参数deletechars中的字符将会被移除, 而剩余的的字符将会通过给定的转化表进行映射替换, 这个表必须是长度256的字符串或者是None. 当为None时就不进行映射替换.

 

所以 s.translate(None, "aeiouAEIOU") 的意思就是删除掉特定的字符了.

 

而关于映射表的使用, 一般要借用string模块, 下面是一个示例:

 

from string import maketransin_str = "abc"
out_str = "123"
table = maketrans(in_str, out_str)
raw_str = "abc def ghi"
result = raw_str.translate(table, "ag")
print result

结果:

按照方法的定义, 首先去除对应的字符, a和g在映射替换前其实已经被去掉了,  所以在进行映射替换的时候, a是不存在的, 所以并没有映射替换成1, 结果也就如上所示了.

 

中文意义如何?

 

#!/usr/bin/env python
# coding: utf-8from string import maketransin_str = ""
out_str = ""
table = maketrans(in_str, out_str)
raw_str = "你好"
result = raw_str.translate(table)
print result

 

结果:

 

结论: 中文无意义, 不过一般来说, 做日志分析之类的工作时, 面对的多数是英文, 此时作用还是很大的.

 

转载于:https://www.cnblogs.com/scolia/p/6116465.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/371936.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

JavaFX 2.0布局窗格– FlowPane和TilePane

FlowPanes和TilePanes是不错的布局窗格,如果您想一个接一个地连续地水平或垂直地布局子级,则可以。 它们彼此非常相似,因为它们都将子级布置成列(在水平Flow / TilePane的情况下)并按其宽度或行(在垂直Flow…

EasyRMS录播管理服务器项目实战:windows上开机自启动NodeJS服务

本文转自EasyDarwin开源团队成员Penggy的博客:http://www.jianshu.com/p/ef840505ae06 近期在EasyDarwin开源团队开发一款基于EasyDarwin在录播服务器EasyRMS过程中,我采用node作为EasyRMS录播服务器录播管理服务器的开发平台,基于node开发关于设备管理,录像计划,录…

MIPS下CPU和RAM的数据流动情况详解

这是计算机硬件间的数据路径(即数据流动的路径),下面将较详细分析此图: PC(program counter, 程序计数器)是一个用于记录当前计算机正在执行的指令的地址的寄存器(register&#xff…

【计算机网络】网络层——IP协议

目录 一. 基本概念 二. 协议报文格式 三. 网段划分 1. 第一次划分 2. CIDR方案 3. 特殊的IP地址 四. IP地址不足 1. 私有IP和公网IP 2. DHCP协议 3. 路由器 4. NAT技术 内网穿透(NAT穿透) 五. 路由转发 路由表生成算法 结束语 一. 基本概念 IP指网络互连协议…

完整的Web应用程序Tomcat JSF Primefaces JPA Hibernate –第2部分

托管豆 这篇文章是本教程第1部分的继续。 在“ com.mb”包中,您将需要创建以下类: package com.mb;import org.primefaces.context.RequestContext;import com.util.JSFMessageUtil;public class AbstractMB {private static final String KEEP_DIALOG…

佳能2900打印机与win10不兼容_佳能RF 1.4、RF 2增倍镜与RF 100500mm L IS USM并不完全兼容...

据佳能官方透露,佳能RF 1.4、RF 2增倍镜与RF 100-500mm F4.5-7.1 L IS USM镜头并不完全兼容。在安装使用两款增倍镜时,用户需将RF 100-500mm镜头变焦环的变焦位置移动到超过300mm的远摄区域。而在搭配增倍镜后,镜头变焦范围将限定在300-500mm…

县级的图书馆计算机管理员,图书馆管理员的岗位职责

图书馆管理员的岗位职责导语:在领导的命令下,紧紧围绕学校总体工作要求,牢固树立全心全意为教学及教科研第一线服务的思想,工作主动热情,努力做好管理育人的工作。图书馆管理员岗位职责:1、每学期认真制订切…

使用Java快速入门的Apache Thrift

Apache Thrift是由facebook创建的RPC框架,现在它是一个Apache项目。 Thrift可让您在不依赖语言的定义文件中定义数据类型和服务接口。 该定义文件用作编译器的输入,以生成用于构建通过不同编程语言进行通信的RPC客户端和服务器的代码。 您也可以参考Thri…

Windows/Linux安装python2.7,pycharm和pandas——《利用Python进行数据分析》

一、Windows下(两种方法) 1. 安装Python EDP_free并安装pandas ① 如果你没有安装python2.7,可以直接选择安装Python EDP_free,然后再安装pandas等包就行 : Python EDP_free 网址: http://epdfree-7-3-2.…

Python基础类型

1. 列表、元组操作 列表是我们最以后最常用的数据类型之一,通过列表可以对数据实现最方便的存储、修改等操作 定义列表 names [Alex,"Tenglan",Eric] 通过下标访问列表中的元素,下标从0开始计数 >>> names[0] Alex >>> nam…

angular点击按钮弹出页面_Win10提示“由于启动计算机时出现了页面文件配置问题”解决方法...

我们在使用Windows10系统的过程中,经常会遇到一些问题。近期有一个网友咨询装机之家小编,称自己Windows10系统开机之后,弹出系统属性对话框,提示“由于启动计算机时出现了页面文件配置问题”的问题,我们要如何解决呢&a…

计算机程序编程就业,计算机编程就业

为毕业生写计算机编程就业提供计算机编程就业范文参考,涵盖硕士、大学本科毕业论文范文和职称论文范文,包括论文选题、开题报告、文献综述、任务书、参考文献等,是优秀免费计算机编程就业网站。基于编程语言类课程教学方法的探讨位把考查学生的编程能力也…

Spring集成–第1节– Hello World

Spring Integration的“ Hello World ” –考虑一个简单的程序,以使用Spring Integration将“ Hello World”打印到控制台,并在此过程中访问一些企业集成模式概念 在进入程序本身之前,快速回顾一下消息传递概念将很有用–消息传递是一种集成样…

正则表达式贪婪模式与懒惰模式

正则表达式贪婪匹配模式&#xff0c;对于初学者&#xff0c;往往也很容易出错。有时候需要匹配一个段代码内容&#xff0c;发现匹配与想要不一致。发现原来&#xff0c;跟贪婪模式有关系。如下&#xff0c;我们看下例子&#xff1a; 什么是贪婪模式 字符串有: “<h3>abd&…

stm32 薄膜键盘原理_市面上的笔记本键盘优缺点解析,看完秒懂

大家在选购电脑时&#xff0c;很多人的关注重点都是笔记本的配置好不好、外观设计酷不酷和电池续航能力强不强&#xff0c;对电脑键盘往往不会太在意&#xff0c;其实一个好的电脑键盘也可以帮助你提高工作效率&#xff0c;特别对于小编这样的文字工作者&#xff0c;如果键盘手…

dell增强保护套装还原失效_汕头长安欧尚汽车音响改装升级,还原真实音色

今天给大家分享的是汕头车韵汽车音响改装店开业以来&#xff0c;升级改装的第113辆长安汽车。长安欧尚x7外观设计十分出彩&#xff0c;整体造型动感十足&#xff0c;前脸采用六边形大尺寸的前格栅&#xff0c;并加入了“云鹰之翼”的设计元素&#xff0c;造型十分具有攻击性&am…

计算机窗口颜色不能自定义,用RBG颜色设置自定义颜色

这个是Mac自带的测色计快捷键shift command c即可复制RBG格式的颜色#DD0000 这个是csdn 的logo里的红色我们得到的是十六位颜色代码但是UIColor()只有这几种初始化方式init(white: CGFloat, alpha: CGFloat)init(hue: CGFloat, saturation: CGFloat, brightness: CGFloat, al…

SSH中一些典型的问题

struts2 1-1&#xff1a;为什么每次请求都要创建一个Action对象&#xff1f; 是出于对线程安全的考虑&#xff0c;每个request都不会相互影响 1-2&#xff1a;ModelDriven拦截器的配置中refreshModelBeforeResult解决了什么问题&#xff1f; 先把旧的model对象从ValueStack…

为什么计算机连接不上打印机,为什么电脑连接打印机后却没反应

2013-12-12我的笔记本怎么连接不了打印机 显示是这样的好&#xff1a;以下方法供您参考&#xff1a;看一下您的系统服务中这两个(最上面 和最下面的是不是没启用)总之是您的局域网连接没有连接上&#xff0c;要不在网上邻居里您会看到其他的机器的&#xff0c;这是搜到的解决的…

JavaFX 2.0布局窗格– BorderPane

BorderPane非常适合开发更复杂的布局。 通常&#xff0c; BorderPane提供五个不同的区域&#xff1a;顶部&#xff0c;右侧&#xff0c;底部&#xff0c;左侧和中央。 您可以通过调用setTop/setBottom/set…方法将Node设置到每个区域。 这种方法使开发“类似于网站”的应用程序…