刚学习Python的时候,你是否遇到过这样的练习?
比如前两个,当时只能老老实实的逐个手动输入“abcdefghijklmnopkrstuvwxyz”和“0123456789”给 print 函数,向下面这样:
print('abcdefghijklmnopkrstuvwxyz')
print('0123456789')
# abcdefghijklmnopkrstuvwxyz
# 0123456789
今天看书才发现一个更省事的方法,Python的 string 模块里面定义一些常用的常量,就包括字母表、数字等等,只需要调用相关的常量属性就可以实现,代码既简洁又高效。从此告别傻傻地手动输入。
本文,我将向大家介绍 string 模块的一些宝藏功能,让你写出更高效、更优雅的代码。
话不多说,开始上课!注意~~前方高能,美女助教引领大家快速进入状态,还在打瞌睡的请打起精神🤭🤭🤭
string 模块
内置,意味着我们不需要单独安装它,只需要在脚本顶部导入它即可使用。该模块包括下面这些很有用的魔法属性:
string.ascii_lowercase
一次性输出所有26个小写字母,再也不用一个个手动输入啦!
import string
print(f'Alphabet by lowercase: {string.ascii_lowercase}')
# Alphabet by lowercase: abcdefghijklmnopqrstuvwxyz
string.ascii_uppercase
与 ascii_lowercase 相反,这个属性用于一次性输出所有大写字母:
print(f'Alphabet by uppercase: {string.ascii_uppercase}')
# Alphabet by uppercase: ABCDEFGHIJKLMNOPQRSTUVWXYZ
string.whitespace
这个属性可以一次性输出所有空格类型(白色空格、制表符、换行符等),注意,为了看到效果,请将结果转换为列表后输出,否则直接打印的话会是一片空白:
print(f'All whitespaces: {[string.whitespace]}')
# All whitespaces: [' \t\n\r\x0b\x0c']
string.punctuation
这个属性可用于一次性输出所有标点符号:
print(f'All punctuations: {string.punctuation}')
# All punctuations: !"#$%&'()*+,-./:;<=>?@[\]^_`{|}~
string.digits
一次性打印出所有数字:
print(f'All numbers: {string.digits}')
# All numbers: 0123456789
string.ascii_letters
这个属性是 ascii_lowercase 和 ascii_uppercase 的组合,即一次性打印出所有大小写字母:
print(f'Alpabet letters: {string.ascii_letters}')
# Alpabet letters: abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ
string.hexdigits
这个属性可以输出代表十六进制数字的所有字符:
print(f'Hex digits: {string.hexdigits}')
# Hex digits: 0123456789abcdefABCDEF
string.octdigits
这个属性则用于输出代表八进制的所有字符,与 string.digits 的输出结果相比,少了“89”:
print(f'Octal digits: {string.octdigits}')
# Octal digits: 01234567
这些预定义的字符串常量可以用于多种场景,例如数据验证、数据清洗、字符分类和更多。例如,使用 string.digits 可以快速检查或过滤出字符串中的数字,或者使用 string.punctuation 来移除文本中的所有标点符号。
string 模块本身主要提供的是这些预定义常量,而不提供特殊的方法或函数。但这些常量在结合正则表达式或其他字符串处理功能时,可以让你的代码更简洁和优雅,更加 Pythonic。
例如,如果需要检查一个字符串是否只包含字母和数字,可以结合使用 string.ascii_letters 和 string.digits 来创建一个检查用的集合:
import string
allowed_chars = set(string.ascii_letters + string.digits)
def is_alphanumeric(s):
return set(s).issubset(allowed_chars)
test_str = 'I love Python programming, 666!'
print(is_alphanumeric(test_str))
# False
在Python标准库的 string 模块中,我已经列出了主要的预定义字符串常量,这些常量基本涵盖了模块的核心功能。这些常量主要用于提供方便的字符集,帮助程序员在处理文本数据时避免手动键入这些常见的字符列表。
除了前面提到的常量,string 模块没有提供其他的内置方法或属性。它的设计主要是为了提供简便的、预定义的字符集,这些字符集经常在文本处理中使用。
虽然 string 模块本身功能相对简单,但可以与Python的其他文本处理功能如正则表达式 (re 模块)、文本转换和编码等结合使用来实现更复杂的功能。这里是一些实用的示例,展示如何利用 string 模块来处理更高级的文本问题:
生成随机字符串:使用 string 模块中的字符集合,结合 random 模块,可以轻松生成随机密码或标识符。
import string
import random
def get_random_string(length=10):
return ''.join(random.choice(string.ascii_letters + string.digits) for _ in range(length))
print(f'Random password: {get_random_string()}')
print(f'Random identifier: {get_random_string(length=12)}')
# Random password: wc7m5wD2KM
# Random identifier: SHrea9RchD4A
清洗字符串:移除字符串中的特定字符集,比如所有标点符号。
import string
def remove_punctuation(s):
return s.translate(str.maketrans('', '', string.punctuation))
test_str = 'My email is myname@example.com!'
print(f'Removed punctuation: {remove_punctuation(test_str)}')
# Removed punctuation: My email is mynameexamplecom
字符分类:可以使用 string 模块来快速分类字符串中的字符,如分离字母和数字。
import string
def classify_chars(s):
letters = [ch for ch in s if ch in string.ascii_letters]
digits = [ch for ch in s if ch in string.digits]
return letters, digits
尽管 string 模块提供的内容相对简单,但这些工具非常适合与 Python 中的其他功能相结合,创建更复杂的文本处理解决方案。这种模块化的方法不仅保持代码的简洁性,也提高了开发效率。
好啦,今天分享就到此结束啦!赶紧去用起来吧!
推荐阅读👇👇👇
Python效率秘籍:掌握这8个内存优化技巧,让你的代码飞起来!!!
Python——函数定义中的“/”和“*”到底有什么用?一次性讲清楚~~
掌握Pandas数据分段:精确解读cut与qcut函数的神秘力量
成为Python高手:掌握这5个核心技能,迈入编程精英行列!
- END -
🌟 喜欢这篇文章吗?给个赞支持一下吧!🌟
如果你发现今天的内容对你有帮助,不妨点个赞并关注我,不错过更多关于Python、数据分析和机器学习的深入分析和最新趋势。我们一起探索数据的力量,解锁AI的潜能。您的每一次互动都是对我的极大鼓励,也是我们共同成长的动力!
👇👇👇 关注并开启星标提醒,让知识与技能的火花不断在你的职业道路上燃烧吧!
原文作者:数据派探险家;如有侵权,请联系管理员删除。