说明
《Python 教程》 持续更新中,提供建议、纠错、催更等加作者微信: gairuo123(备注:pandas教程)和关注公众号「盖若」ID: gairuo。跟作者学习,请进入 Python学习课程。欢迎关注作者出版的书籍:《深入浅出Pandas》 和 《Python之光》。
在 Python 中,str.maketrans()方法是一个静态方法,用于创建一个翻译表,该表被 str.translate() 方法使用,用于在字符串中执行替换操作。
分别给出使用一个、两个和三个参数的示例:
使用一个参数:
# 一个参数,字典映射
translation_table_one = str.maketrans({'a': '1', 'b': '2', 'c': '3'})
text_one = "abc"
translated_text_one = text_one.translate(translation_table_one)
print(translated_text_one) # 输出: 123
使用两个参数:
# 两个参数,字符映射
translation_table_two = str.maketrans('abc', '123')
text_two = "abc"
translated_text_two = text_two.translate(translation_table_two)
print(translated_text_two) # 输出: 123
使用三个参数:
# 三个参数,字符删除
translation_table_three = str.maketrans('abc', '123', 'xyz')
text_three = "abcxyz"
translated_text_three = text_three.translate(translation_table_three)
print(translated_text_three) # 输出: 123
这三个示例分别演示了使用一个字典映射、两个字符串映射和三个字符串删除的情况。你可以根据具体需求选择适合的参数形式。
static str.maketrans(x[, y[, z]])
此静态方法返回一个可供 str.translate() 使用的转换对照表。这里,y 和 z 是可选参数。参数情况为:
以下是 str.maketrans()
的基本语法:
class str:
@staticmethod
str.maketrans(x[, y[, z]])
str.maketrans()方法最多接受三个参数:
maketrans 方法返回一个转换表(字典类型),该表具有 Unicode 序数到其转换/替换的1对1映射。
具体用法参考示例。
# example dictionary
dct = {"a": "123", "b": "456", "c": "789"}
print(str.maketrans(dct))
# {97: '123', 98: '456', 99: '789'}
# example dictionary
dct = {97: "123", 98: "456", 99: "789"}
print(str.maketrans(dct))
# {97: '123', 98: '456', 99: '789'}
在这里,定义了字典dict。它包含字符a、b和c分别到123、456和789的映射。maketrans 创建字符的Unicode序数与其对应翻译的映射。
因此,97(‘a’)映射到‘123’,98‘b’映射到456,99‘c’映射到789。这可以从两个字典的输出中得到证明。
此外,如果字典中映射了两个或多个字符,则会引发异常。
# first string
first = "abc"
second = "def"
print(str.maketrans(first, second))
# {97: 100, 98: 101, 99: 102}
# example dictionary
first = "abc"
second = "defghi"
print(str.maketrans(first, second))
# ValueError: the first two maketrans arguments must have equal length
这里首先定义两个长度相等的字符串abc和def,并创建相应的翻译。
只打印第一个翻译可以使您从firstString中每个字符的Unicode序数到secondString中的同一索引字符进行1对1的映射。
在这种情况下,97('a')被映射到100('d'),98('b')映射到101('e'),99('c')映射成102('f')。
尝试为长度不等的字符串创建转换表会引发ValueError异常,指示字符串必须具有相等的长度。
# first string
first = "abc"
second = "def"
third = "abd"
print(str.maketrans(first, second, third))
# {97: None, 98: None, 99: 102, 100: None}
这里,首先创建两个字符串firstString和secondString之间的映射。
然后,第三个参数thirdString将其中每个字符的映射重置为None,并为不存在的字符创建一个新的映射。
在这种情况下,thirdString将97('a')和98('b')的映射重置为None,并为映射为None的100('d')创建一个新映射。
更新时间:2023-11-23 11:23:19 标签:python 字符串 映射