python-小知识点 --- 判断字母大小写和数字字符串,特殊符号

本文详细介绍Python中字符串的各种操作方法,包括使用内置函数进行字符判断、利用ASCII码转换字符,以及通过字符串模块进行高效操作。同时,文章还提供了生成随机字符串的方法,适用于多种场景。

1.对于字符串 — 使用字符串内置函数判断

  • isalnum() 所有字符都是数字或者字母,为真返回 Ture,否则返回 False
  • isalpha() 所有字符都是字母,为真返回 Ture,否则返回 False
  • isdigit() 所有字符都是数字,为真返回 Ture,否则返回 False
  • islower() 所有字符都是小写,为真返回 Ture,否则返回 False
  • isupper() 所有字符都是大写,为真返回 Ture,否则返回 False
  • istitle() 所有单词都是首字母大写,为真返回 Ture,否则返回 False
  • isspace() 所有字符都是空白字符,为真返回 Ture,否则返回 False

2.对于单个字符判断 — 列出所有可能判断

列出所有可能后做判断处理
  1. 使用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"))
  1. 使用字符串模块 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)])) 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值