Python
 Computer >> コンピューター >  >> プログラミング >> Python

Pythonのmaketrans()およびtranslate()関数


Python String maketrans()

maketrans()メソッドは、translate()メソッドで使用できる変換用のマッピングテーブルを返します。これは、文字の変換/置換への1対1のマッピングを作成する静的メソッドです。このメソッドは、翻訳用の各文字のUnicode表現を作成します。

maketrans()メソッドの構文は次のとおりです-

string.maketrans(x[, y[, z]])
y and z are optional arguments.

String maketrans()パラメータ

maketrans()メソッドには3つのパラメーターがあります。

x-この場合、引数が1つだけ指定されている場合、それは辞書である必要があり、辞書には、単一の文字列からその翻訳への1対1のマッピング、またはUnicode番号(「a」の場合は97)からその翻訳へのマッピングが含まれている必要があります。

y-この場合、2つの引数が渡される場合、同じ長さの2つの文字列である必要があり、最初の文字列の各文字は、2番目の文字列の対応するインデックスの代わりになります。

z-この場合、3つの引数が渡されると、3番目の引数の各文字はnoneにマップされます。

String maketrans()からの戻り値

このメソッドは、Unicode序数の変換/置換への1対1のマッピングを含む変換テーブルを返します。

例1

maketrans()でディクショナリを使用した変換テーブル

サンプルコード

dict= {"a": "123", "b": "456", "c": "789"}
my_string = "abc"
print(my_string.maketrans(dict))
# example dictionary
dict = {97: "123", 98: "456", 99: "789"}
my_string = "abc"
print(my_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()

で2つの文字列を使用する変換テーブル

my_string1 = "abc"
my_string2 = "def"
string = "abc"
print(string.maketrans(my_string1, my_string2))
# Example dictionary
my_string1 = "abc"
my_string2 = "defghi"
string = "abc"
print(string.maketrans(my_string1, my_string2))

出力

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

説明 −この例では、同じ長さの「abc」と「def」の2つのストリングが定義されています。そして、対応する翻訳が作成され、最初の翻訳のみを印刷すると、my_string1の各文字のUnicode序数から、my_string2の同じインデックス付き文字への1対1のマッピングが得られます。

ただし、この場合、97('a')は100('d')に、98('b')は101('e')に、99('c')は102('f')にマップされます。等しくない長さの文字列の変換テーブルを作成すると、文字列の長さが等しくなければならないことを示すValueError例外が発生します。

translate() 。変換テーブルが文字を他の文字にマップすることはわかっています。 Pythonのtranslate()メソッドを使用して、文字列の多くの文字を置換します。まず、maketrans()を使用して翻訳辞書を作成し、これを渡して翻訳します。

maketransを使用するPythonプログラム、翻訳

#Python program that uses maketrans, translate
dict = str.maketrans("abc", "def")
print(dict)
# Translate this value.
value = "aabbcc"
result = value.translate(dict)
print(result)

出力

{97: 100, 98: 101, 99: 102}
ddeeff

文字を無視して削除するPythonプログラム

# Create translation table.
table = str.maketrans("78", "12", "9")
# Translate this string.
input = "123456789"
result = input.translate(table)
# Write results.
print(input)
print(result)

出力

123456789
12345612

rot13変換を適用するPythonプログラム

#Create translation table.
trans = str.maketrans("abcdefghijklmnopqrstuvwxyz","nopqrstuvwxyzabcdefghijklm")
# Apply rot13 translation.
print("gandalf".translate(trans))
print("gandalf".translate(trans).translate(trans))

出力

tnaqnys
gandalf

  1. 与えられた辞書に従ってPython文字列を翻訳する方法は?

    オプションで、テーブル(文字列モジュールのmaketrans()関数で作成)を使用してすべての文字が翻訳された文字列のコピーを返すメソッドtranslate()を使用できます。文字列deletecharsで見つかったすべての文字を削除します。 例 from string import maketrans   # Required to call maketrans function. intab = "aeiou" outtab = "12345" trantab = maketrans(intab, outtab) str = "

  2. Python関数はなぜ、どのようにハッシュ可能ですか?

    オブジェクトがその存続期間中同じままであるハッシュ値を持っている場合、そのオブジェクトはハッシュ可能であると言われます。 __hash __()メソッドがあり、他のオブジェクトと比較できます。このためには、__ eq __()または__cmp __()メソッドが必要です。比較したときにハッシュ可能なオブジェクトが等しい場合、それらは同じハッシュ値を持ちます。 これらのデータ構造は内部でハッシュ値を使用するため、ハッシュ可能であると、オブジェクトが辞書キーおよびセットメンバーとして使用可能になります。 Pythonのすべての不変の組み込みオブジェクトはハッシュ可能です。リストや辞書などの可変