字符转换器

2024-10-03 19:32:26 发布

您现在位置:Python中文网/ 问答频道 /正文

turk = {"Ç":"C","ç":"c","Ğ":"G","ğ":"g","İ":"I","ı":"i",
        "Ö":"O","ö":"o","Ş":"S","ş":"s","Ü":"U","ü":"u"}

eng = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz \t1234567890"

space = " "

word = input("Enter a word")


def turkChar (word):
    newword = ""
    for c in word:
        if c in eng:
            newword = newword + c
        elif c in turk:
            newword = newword + turk[c]
        else:
            newword = newword + space
    return newword
       

我写了这个简单的代码,将土耳其语字符转换成英语。我添加了一个空格变量来创建一个空格,但若用户想要创建更多的空格、制表符甚至数字,该怎么办呢。我怎么做这个


Tags: inforinputifdefspaceengword
3条回答

我想你应该有一张从土耳其语到英语的地图。所以A会映射到A,B到B,等等,除了你已经有的突厥语词典。然后可以将空格、制表符和任何其他字符添加到映射中

您的代码成为一个循环,使用get函数进行字典查找

我认为您不应该将空格、制表符和数字字符与eng字符区别对待。我只想像这样扩展你的角色:

eng = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz \t1234567890"

然后,我们可以删除“空间”部分,结果如下:

turk = {"Ç":"C","ç":"c","Ğ":"G","ğ":"g","İ":"I","ı":"i",
        "Ö":"O","ö":"o","Ş":"S","ş":"s","Ü":"U","ü":"u"}

eng = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz \t1234567890"

word = input("Enter a word")

def turkChar(word, turk):
    newword = ""
    for c in word:
        if c in eng:
            newword = newword + c
        elif c in turk:
            newword = newword + turk[c]
    return newword
  • 制表符被写为字符串中的\t
  • 注意到eng字符串中缺少一个较低的h
  • 您将turk定义为参数,但未将eng定义为参数,或者两者都定义,或者两者都不定义
  • 如果在engturk中找不到字符,则忽略该字符

Python有一个名为^{}的字符串函数,它是为此而设计的,非常有效(比循环/dict查找效率高很多)。您可以使用与现有词典完全相同的词典创建翻译表,您可以使用^{}创建该表,然后将其传递到translate()

turk = str.maketrans({"Ç":"C","ç":"c","Ğ":"G","ğ":"g","İ":"I","ı":"i",
        "Ö":"O","ö":"o","Ş":"S","ş":"s","Ü":"U","ü":"u"})

s = "Hellö ĞÇ 123"

s.translate(turk)
# 'Hello GC 123'

相关问题 更多 >