当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Python String maketrans()用法及代码示例


字符串maketrans() 方法返回可用于translate() 方法的转换映射表。

简单来说,maketrans() 方法是一种静态方法,它创建一个字符到其翻译/替换的一对一映射。

它为每个字符创建一个 Unicode 表示以进行翻译。

当在translate() 方法中使用时,此转换映射随后用于将字符替换为其映射的字符。

用法:

string.maketrans(x[, y[, z]])

在这里,yz 是可选参数。

参数:

maketrans() 方法采用 3 个参数:

  • x- 如果只提供一个参数,它必须是字典。
    字典应包含从单个字符串到其翻译的一对一映射,或一个 Unicode 数字(对于 'a' 为 97)到其翻译的一对一映射。
  • y- 如果传递了两个参数,则它必须是两个长度相等的字符串。
    第一个字符串中的每个字符都是对第二个字符串中相应索引的替换。
  • z- 如果传递了三个参数,则第三个参数中的每个字符都映射为 None。

返回:

maketrans() 方法返回一个转换表,其中包含 Unicode 序数与其转换/替换的一对一映射。

示例 1:使用带有 maketrans() 的字典的翻译表

# example dictionary
dict = {"a": "123", "b": "456", "c": "789"}
string = "abc"
print(string.maketrans(dict))

# example dictionary
dict = {97: "123", 98: "456", 99: "789"}
string = "abc"
print(string.maketrans(dict))

输出

{97: '123', 98: '456', 99: '789'}
{97: '123', 98: '456', 99: '789'}

这里,定义了字典dict。它包含字符 a、b 和 c 分别到 123、456 和 789 的映射。

maketrans() 创建字符的 Unicode 序数与其相应翻译的映射。

因此,97 ('a') 映射到 '123',98 'b' 映射到 456,99 'c' 映射到 789。这可以从两个字典的输出中得到证明。

此外,如果字典中映射了两个或更多字符,则会引发异常。

示例 2:使用带有 maketrans() 的两个字符串的翻译表

# first string
firstString = "abc"
secondString = "def"
string = "abc"
print(string.maketrans(firstString, secondString))

# example dictionary
firstString = "abc"
secondString = "defghi"
string = "abc"
print(string.maketrans(firstString, secondString))

输出

{97: 100, 98: 101, 99: 102}
ValueError: the first two maketrans arguments must have equal length

这里首先定义两个等长的字符串abcdef。并创建相应的翻译。

仅打印第一个翻译可以为您提供到 firstString 中每个字符的 Unicode 序数到 secondString 上相同索引字符的一对一映射。

在这种情况下,97 ('a') 映射到 100 ('d')、98 ('b') 到 101 ('e') 和 99 ('c') 到 102 ('f')。

尝试为不等长度的字符串创建转换表会引发 ValueError 异常,指示字符串必须具有相等的长度。

示例 3:带有 maketrans() 的可移动字符串的翻译表

# first string
firstString = "abc"
secondString = "def"
thirdString = "abd"
string = "abc"
print(string.maketrans(firstString, secondString, thirdString))

输出

{97: None, 98: None, 99: 102, 100: None}

这里,首先,创建两个字符串firstStringsecondString之间的映射。

然后,第三个参数thirdString 将其中每个字符的映射重置为None,并为不存在的字符创建一个新映射。

在这种情况下,thirdString 将 97 ('a') 和 98 ('b') 的映射重置为 None,并为映射到 None 的 100 ('d') 创建一个新映射。

相关用法


注:本文由纯净天空筛选整理自 Python String maketrans()。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。