'''
maketrans()、translate()
maketrans()方法用来生成字符映射表,而translate()方法则按映射表中定义的对应关系转换并替换其中的字符,使用这两个方法的组合可以
同时处理多个不同的字符,replace()方法则无法满足这一要求。
'''
#创建映射表,将字符'abcdef123'一一地转换为'uvwxyz@#$'
table=''.maketrans('abcdef123','uvwxyz@#$')
s2 = 'Python is a greate programming language.I like it 123!'
print(s2.translate(table))
# Python is u gryuty progrumming lunguugy.I liky it @#$! #模拟凯撒加密
#每个英文字母替换为字母表中后面第3个字母,当然,也可以是其他数字
import string
lowerLetters=string.ascii_lowercase
upLetters=string.ascii_uppercase
before=lowerLetters+upLetters
print(before)
# abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ
#循环移位
after=lowerLetters[3:]+lowerLetters[:3] + upLetters[3:]+upLetters[:3]
print(after)
# defghijklmnopqrstuvwxyzabcDEFGHIJKLMNOPQRSTUVWXYZABC
#创建字符转换表,将英文字母替换为该字母后面第3个字母
table1=''.maketrans(before,after)
example='If the implementation is easy to explain,it may be a good idea.'
print(example.translate(table1))
# Li wkh lpsohphqwdwlrq lv hdvb wr hasodlq,lw pdb eh d jrrg lghd. #Python标准库中的string提供了英文字母大小写、数字字符、标点符号等常量,可以直接使用,下面的代码实现随机密码生成功能
import string
x=string.digits+string.ascii_letters+string.punctuation #可能字符集
print(x)
# 0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ!"#$%&'()*+,-./:;<=>?@[\]^_`{|}~
print(string.digits)
#
print(string.ascii_letters)
# abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ
print(string.punctuation)
# !"#$%&'()*+,-./:;<=>?@[\]^_`{|}~
import random
print(''.join([random.choice(x) for i in range(8)])) #随机选取8个字符 '''
在Python中,字符串属于不可变对象,不支持原地修改,如果需要修改其中的值,只能重新创建一个新的字符串对象。
然而,如果确实需要一个支持原地修改的unicode数据对象,可以使用io.StringIO对象或array模块.
'''
from io import StringIO
s3='Hello world'
sio=StringIO(s3) #创建可变字符串对象
print(sio)
# <_io.StringIO object at 0x101ba5d38>
print(sio.tell()) #返回当前位置
#
print(sio.read()) #从当前位置开始读取字符串
# Hello world
print(sio.getvalue()) #返回可变字符串的全部内容
# Hello world
print(sio.tell())
#
sio.seek(6) #重新定位当前位置
sio.write('SDIBT') #从当前位置开始写入字符串
print(sio.read())
# ''
print(sio.getvalue())
# Hello SDIBT
print(sio.tell())
#
s3='Hello world'
from array import array
sa=array('u',s3)
print(sa)
# array('u', 'Hello world')
print(sa.tostring()) #查看可变字符串对象的内容
# b'H\x00\x00\x00e\x00\x00\x00l\x00\x00\x00l\x00\x00\x00o\x00\x00\x00 \x00\x00\x00w\x00\x00\x00o\x00\x00\x00r\x00\x00\x00l\x00\x00\x00d\x00\x00\x00'
print(sa.tounicode()) #查看可变字符串对象的内容
# Hello world
sa[0] = 'F' #修改指定位置上的字符
print(sa)
# array('u', 'Fello world')
sa.insert(5,'w') #在指定位置插入字符
print(sa)
# array('u', 'Fellow world')
sa.remove('l') #删除指定字符的首次出现
print(sa)
# array('u', 'Felow world')

Python_字符串的映射与可变字符串的应用的更多相关文章

  1. 为什么字符串String是不可变字符串&&"".equals(str)与str.equals("")的区别

    为什么字符串String是不可变字符串 实际上String类的实现是char类型的数组 虽然说源码中设置的是private final char[] value; final关键词表示不可变动 但是只 ...

  2. 可变字符串NSMutableString

    //可变字符串继承自字符串 //拼接 NSMutableString *string = [NSMutableString string]; [string appendString:@"今 ...

  3. 不可变字符串NSString

    /*字符串的常用方法*/ //1.通常用来把一些基本数据类型和字符串进行拼接 ; float b = 9527.0; NSString *string = [NSString stringWithFo ...

  4. IOS 学习笔记 2015-03-24 OC-API-不可变字符串

    大部分是模仿// // main.m // OC-API-不可变字符串 // // Created by wangtouwang on 15/3/25. // Copyright (c) 2015年 ...

  5. oc基础 不可变字符串的创建和使用

    oc基础  不可变字符串的创建和使用 简介:下面都是字符串基本用法. 1.字符串的创建 //创建oc常量字符串 NSString *str=@"hello world!"; NSL ...

  6. iOS可变字符串的所有操作

    可直接把代码复制即可结合输出看结果加深记忆 //创建一个可变字符串 NSMutableString * ms1 = [[NSMutableString alloc]init]; //可以通过类方法来创 ...

  7. iOS不可变字符串的所有操作

    可以直接复制代码即可运行看看结果,方便理解 //NSString //OC字符串不能用printf输出 //但是遗憾的是OC没有一个从终端读取数据的方式,需要使用scanf读取C字符串然后转换成OC的 ...

  8. 使用sed命令向文件中追加可变字符串

    1.如何向文件追加可变字符串,有如下两种方法 sed -i '1a '$s'' filename sed -i "1a $s" filename 注意: 以上命令是假定向文件fil ...

  9. 可变字符串类 StringBuilder

    string类创建的字符串是不可变的(同一内存中),每更改一次,就会新开辟内存,不利于高效频繁操作. 当频繁操作同一字符串变量时,建议使用StringBuilder. 可变字符串类StringBuil ...

随机推荐

  1. EventBus的其他常用函数

    上一篇EventBus最简易使用方式介绍了EventBus最简易的使用方式,摆脱了叽里呱啦+图片的长篇大论.目的是为了让刚开始接触的人们不晕头转向.那么这篇..我也要开始图片+叽里呱啦了. 转载请注明 ...

  2. (二)plist的使用和序列帧动画

    六.plist的使用方法: iOS的程序在安装在手机上以后会把全部资源文件集成在一个文件夹中,这种文件集合称为bundle,对于一般的工程,只有一个bundle,即mainbundle,因此可以通过b ...

  3. 断言(Assertion)需要注意的一个地方

    因为断言只在debug构建中有效,所以它是中关重要的去避免运行任何代码或调用任何方法在断言条件中,而这些代码或方法会影响程序的状态. 否则程序的行为将在debug和release构建中变得不一致,这显 ...

  4. AngularJS进阶(二十七)实现二维码信息的集成思路

    AngularJS实现二维码信息的集成思路        赠人玫瑰,手留余香.若您感觉此篇博文对您有用,请花费2秒时间点个赞,您的鼓励是我不断前进的动力,与君共勉!      注:点击此处进行知识充电 ...

  5. 浅谈C之精华---指针

    今天是2016年的第一天,祝大家元旦快乐!哎,今天有点倒霉,代码写到一半,突然机子就没电了,幸好有保存,否则今天没有这篇日志的出现. 好了,今天以我个人的角度来深度剖析一下C语言中关于指针的用法以及注 ...

  6. 套接字编程相关函数(2:TCP套接字编程相关函数)

    本文摘录自<UNIX网络编程 卷1>. 基本套接字函数 socket函数 为了执行网络I/O,一个进程必须做的第一件事就是调用socket函数,指定期望的通信协议类型.其定义如下: #in ...

  7. Makefile的obj-y 和 obj-m

    目标定义是Kbuild Makefile的主要部分,也是核心部分.主要是定义了要编 译的文件,所有的选项,以及到哪些子目录去执行递归操作. 最简单的Kbuild makefile 只包含一行: 例子: ...

  8. unity连接数据库工具

    这里用的是一个集成工具UPUPW(Nginx+mysql+php版本) 网址:http://php.upupw.net/ 数据库登录: 本地: http://127.0.0.1/pmd 外网: htt ...

  9. leetcode之旅(11)-Integer to Roman

    题目描述: Given an integer, convert it to a roman numeral. Input is guaranteed to be within the range fr ...

  10. Ruby 2.1: objspace.so

    原文  http://tmm1.net/ruby21-objspace/ 26 Dec 2013 ObjectSpace in ruby contains many useful heap debug ...