1.对于字符串 — 使用字符串内置函数判断
- isalnum() 所有字符都是数字或者字母,为真返回 Ture,否则返回 False
- isalpha() 所有字符都是字母,为真返回 Ture,否则返回 False
- isdigit() 所有字符都是数字,为真返回 Ture,否则返回 False
- islower() 所有字符都是小写,为真返回 Ture,否则返回 False
- isupper() 所有字符都是大写,为真返回 Ture,否则返回 False
- istitle() 所有单词都是首字母大写,为真返回 Ture,否则返回 False
- isspace() 所有字符都是空白字符,为真返回 Ture,否则返回 False
2.对于单个字符判断 — 列出所有可能判断
列出所有可能后做判断处理
- 使用chr转换数字所对应的ASCII对应的字符
先推荐一个好用的在线工具网站:查询ASCII为例
print([chr(i) for i in range(65, 91)]) # 所有大写字母
print([chr(i) for i in range(97, 123)]) # 所有小写字母
print([chr(i) for i in range(48, 58)]) # 所有数字
小例子(加密密码):
# 将明密码转换成暗密码
# 转换规则:小写字母转成手机输入法九宫格对应的数字,大写字母转成对应的小写字母加1,其他不变
passwd_lower = {'abc': '2', 'def': '3', 'ghi': '4', 'jkl': '5', 'mno': '6', 'pqrs': '7', 'tuv': '8', 'wxyz': '9'}
passwd_upper = dict(zip([chr(i) for i in range(65, 91)], [chr(i) for i in range(98, 123)] + ['a']))
def passwd_jump(src):
if not isinstance(src, str):
raise TypeError
dst = ""
for i in src:
if i.islower(): # 小写字母转数字
for k, v in passwd_lower.items():
if i in k:
dst += v
break
elif i.isupper(): # 大写字母转小写加1
dst += passwd_upper[i]
else: # 其他字符不变
dst += i
return dst
print(passwd_jump("YangZi1989"))
- 使用字符串模块 string
import string
print(string.digits) # 输出包含数字0~9的字符串
print(string.ascii_letters) # 包含所有字母(大写或小写)的字符串
print(string.ascii_lowercase) # 包含所有小写字母的字符串
print(string.ascii_uppercase) # 包含所有大写字母的字符串
print(string.punctuation) # 包含所有标点的字符串
print(string.whitespace) # 所有空白字符 ' \t\n\r\v\f'
print(string.printable) # 所有以上字符
输出结果
0123456789
abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ
abcdefghijklmnopqrstuvwxyz
ABCDEFGHIJKLMNOPQRSTUVWXYZ
!"#$%&'()*+,-./:;<=>?@[\]^_`{|}~
0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ!"#$%&'()*+,-./:;<=>?@[\]^_`{|}~
还是上面的小例子,换个写法:
import bisect as bs
import string
get_lower = lambda x: "23456789"[bs.bisect("dgjmptw", x)]
passwd_upper = dict(zip([chr(i) for i in range(65, 91)], [chr(i) for i in range(98, 123)] + ['a']))
def pwd_jump(src):
if not isinstance(src, str):
raise TypeError
dst = ""
for i in src:
if i in string.ascii_lowercase: # 小写字母转数字
dst += get_lower(i)
elif i in string.ascii_uppercase: # 大写字母转小写加1
dst += passwd_upper[i]
else: # 其他字符不变
dst += i
return dst
print(passwd_jump("YangZi1989"))
随机生成一串字符串
首先确定你需要的字符串组合:这里以大小写字母加数字加标点为例
import string
import random
s = string.ascii_letters + string.digits + string.punctuation
# 少量生成,不重复,可以使用sample
print("".join(random.sample(s, 5)))
# 大量生成,重复,使用choice加for循环
print("".join([random.choice(s) for _ in range(100000)]))
本文详细介绍Python中字符串的各种操作方法,包括使用内置函数进行字符判断、利用ASCII码转换字符,以及通过字符串模块进行高效操作。同时,文章还提供了生成随机字符串的方法,适用于多种场景。
2228

被折叠的 条评论
为什么被折叠?



