Skip to main content

Transform casual text into a leetspeak version.

Project description

LeetTransformer :one::three::three::seven::robot:

Under development! Only Basic Leet is available which consists of substituting every vowel for a number.

Installation


pip install pyleetspeak

Examples of How To Use

The only required argument that the user has to provide is the text_in argument which represent the casual text to transform to leetspeak. Nonetheless, there are other optional arguments that control the behaviour of the transformation:`

  • change_prb determines the probability of a transformation to take place (i.e, if it is equal 1 all the possible transformation will be applied).

  • change_frq is affects how frequently a transformation will occur (i.e, if it is equal 1 all the letters of this transformation type will be changed)

  • mode controls the level of leetspeak transformation. Currently only basic mode is available. We are working on more modes. Stay tuned.

  • seed controls the reproducibility of the results. By default no seed is applied.

  • verbose controls the verbosity of the proccess.

Basic Use

Let's see a simple working example:

from pyleetspeak import LeetSpeaker

text_in = "I speak leetspeak"

leeter = LeetSpeaker(text_in, change_prb=0.8,  change_frq=0.6, mode = "basic", seed = None, verbose=False)

leet_result = leeter.text2leet()

print(leet_result)

# "1 spe4k l33tsp34k"

For the sake of reproducibility you can set a random seed:

from pyleetspeak import LeetSpeaker

leeter = LeetSpeaker(text_in, change_prb=0.8,  change_frq=0.5, mode = "basic", seed = 42, verbose=False)

leet_result = leeter.text2leet()

print(leet_result)

# "1 sp34k l3etspeak"

Minor concerns about the package behaviour: accents are deleted using Unidecode. This is important for languages like Spanish, where the word "melocotón" is preprocessed as "melocoton" and finally transformed to leetspeak.

Get all changes

You can also obtain all the possible versions of a leetspeak text using the get_all_combs parameter like this:

from pyleetspeak import LeetSpeaker

text_in = "leetspeak"

leeter = LeetSpeaker(text_in, mode = "basic", get_all_combs = True)

leet_result = leeter.text2leet()

assert len(leet_result) == 32 # all possible combinations

print(leet_result)

Define your own changes

pyleetspeak is prepared to apply substitutions defined by the user. It is essential to highlight that these new user-defined changes have to follow two possible formats, dictionary or List of tuples. Here we show a toy example to add two new target characters from the original text to be replaced by two different characters and one, respectively:

  • Dictionary type: {"target_chr_1": ["sub_chr_1", "sub_chr_1"], "target_chr_2": ["sub_chr_1"]}

  • List[Tuple] type: [("target_chr_1", ["sub_chr_1", "sub_chr_1"]), (("target_chr_2", ["sub_chr_1"])]

You can add new user-defined substitutions:

from pyleetspeak import LeetSpeaker

text_in = "New changes Leetspeak"

obj = LeetSpeaker(

    text_in,

    change_prb=1,

    change_frq=0.8,

    mode="basic",

    seed=21,

    verbose=False,

    get_all_combs=False,

    user_changes = [("a", "#"), ("s", "$")], # user-defined changes

)

print(obj.text2leet())

# N3w ch@ng3$ L33t$pe4k

Moreover, you can use only the user-defined substitutions:

from pyleetspeak import LeetSpeaker

# Only user changes

text_in = "Only user changes: Leetspeak"

obj = LeetSpeaker(

    text_in,

    change_prb=1,

    change_frq=0.8,

    mode=None, # None pre-defined changes will be applied

    seed=21,

    verbose=False,

    get_all_combs=False,

    user_changes = [("a", "#"), ("s", "$")], # user-defined changes

)

print(obj.text2leet())

# Only u$er ch#nge$: Leet$pe#k

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pyleetspeak-0.0.8.tar.gz (8.8 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

pyleetspeak-0.0.8-py3-none-any.whl (10.2 kB view details)

Uploaded Python 3

File details

Details for the file pyleetspeak-0.0.8.tar.gz.

File metadata

  • Download URL: pyleetspeak-0.0.8.tar.gz
  • Upload date:
  • Size: 8.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.7.1 importlib_metadata/4.10.0 pkginfo/1.8.2 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.9.7

File hashes

Hashes for pyleetspeak-0.0.8.tar.gz
Algorithm Hash digest
SHA256 5b9c24700b7b2437b38c856aa9a6ad745168c59f8f316084182d3491a9e439f4
MD5 942c8915b1a9eec92a8e2abe1b2a52bc
BLAKE2b-256 a504107b32ba1aabf71f849a9bcfe2d599a04fe30c8d6d3228a02131b30a793a

See more details on using hashes here.

File details

Details for the file pyleetspeak-0.0.8-py3-none-any.whl.

File metadata

  • Download URL: pyleetspeak-0.0.8-py3-none-any.whl
  • Upload date:
  • Size: 10.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.7.1 importlib_metadata/4.10.0 pkginfo/1.8.2 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.9.7

File hashes

Hashes for pyleetspeak-0.0.8-py3-none-any.whl
Algorithm Hash digest
SHA256 40a3a04c62f4c3c30e9cfca1ce4a39df94fe54baac3fdf069022f64f47aef631
MD5 866274e70ff3bb79462e7667ebd18eae
BLAKE2b-256 afa332470ed91d440a26df59992ecc052209e1fbcc149c9e51f3bc2994db0798

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page