Python_字符串的映射與可變字符串的應用


 1 '''
 2 maketrans()、translate()
 3 maketrans()方法用來生成字符映射表,而translate()方法則按映射表中定義的對應關系轉換並替換其中的字符,使用這兩個方法的組合可以
 4 同時處理多個不同的字符,replace()方法則無法滿足這一要求。
 5 '''
 6 #創建映射表,將字符'abcdef123'一一地轉換為'uvwxyz@#$'
 7 table=''.maketrans('abcdef123','uvwxyz@#$')
 8 s2 = 'Python is a greate programming language.I like it 123!'
 9 print(s2.translate(table))
10 # Python is u gryuty progrumming lunguugy.I liky it @#$!
11 
12 #模擬凱撒加密
13 #每個英文字母替換為字母表中后面第3個字母,當然,也可以是其他數字
14 import string
15 lowerLetters=string.ascii_lowercase
16 upLetters=string.ascii_uppercase
17 before=lowerLetters+upLetters
18 print(before)
19 # abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ
20 #循環移位
21 after=lowerLetters[3:]+lowerLetters[:3] + upLetters[3:]+upLetters[:3]
22 print(after)
23 # defghijklmnopqrstuvwxyzabcDEFGHIJKLMNOPQRSTUVWXYZABC
24 #創建字符轉換表,將英文字母替換為該字母后面第3個字母
25 table1=''.maketrans(before,after)
26 example='If the implementation is easy to explain,it may be a good idea.'
27 print(example.translate(table1))
28 # Li wkh lpsohphqwdwlrq lv hdvb wr hasodlq,lw pdb eh d jrrg lghd.
29 
30 #Python標准庫中的string提供了英文字母大小寫、數字字符、標點符號等常量,可以直接使用,下面的代碼實現隨機密碼生成功能
31 import string
32 x=string.digits+string.ascii_letters+string.punctuation #可能字符集
33 print(x)
34 # 0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ!"#$%&'()*+,-./:;<=>?@[\]^_`{|}~
35 print(string.digits)
36 # 0123456789
37 print(string.ascii_letters)
38 # abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ
39 print(string.punctuation)
40 # !"#$%&'()*+,-./:;<=>?@[\]^_`{|}~
41 import random
42 print(''.join([random.choice(x) for i in range(8)]))    #隨機選取8個字符
43 
44 '''
45 在Python中,字符串屬於不可變對象,不支持原地修改,如果需要修改其中的值,只能重新創建一個新的字符串對象。
46 然而,如果確實需要一個支持原地修改的unicode數據對象,可以使用io.StringIO對象或array模塊.
47 '''
48 from io import StringIO
49 s3='Hello world'
50 sio=StringIO(s3)    #創建可變字符串對象
51 print(sio)
52 # <_io.StringIO object at 0x101ba5d38>
53 print(sio.tell())  #返回當前位置
54 # 0
55 print(sio.read()) #從當前位置開始讀取字符串
56 # Hello world
57 print(sio.getvalue())   #返回可變字符串的全部內容
58 # Hello world
59 print(sio.tell())
60 # 11
61 sio.seek(6) #重新定位當前位置
62 sio.write('SDIBT')  #從當前位置開始寫入字符串
63 print(sio.read())
64 # ''
65 print(sio.getvalue())
66 # Hello SDIBT
67 print(sio.tell())
68 # 11
69 s3='Hello world'
70 from array import array
71 sa=array('u',s3)
72 print(sa)
73 # array('u', 'Hello world')
74 print(sa.tostring())    #查看可變字符串對象的內容
75 # 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'
76 print(sa.tounicode())   #查看可變字符串對象的內容
77 # Hello world
78 sa[0] = 'F' #修改指定位置上的字符
79 print(sa)
80 # array('u', 'Fello world')
81 sa.insert(5,'w')   #在指定位置插入字符
82 print(sa)
83 # array('u', 'Fellow world')
84 sa.remove('l')  #刪除指定字符的首次出現
85 print(sa)
86 # array('u', 'Felow world')

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM