替换字符串并忽略大小写Python

2024-06-25 07:01:03 发布

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

我在用大写或小写替换某些字符串时遇到问题

这是我的测试脚本:

translate=[{'NO': 'frontsplitter', 'DK': 'frontlæbe'}, {'NO': 'diffuser', 'DK': 'diffusor'}, {'NO': 'gitter', 'DK': 'grill'}, {'NO': 'lettmetallfelger', 'DK': 'letmetalfælge'}, {'NO': 'stålfelger', 'DK': 'stålfælge'}, {'NO': 'atv felger', 'DK': 'atv fælge'}, {'NO': 'dekk', 'DK': 'dæk'}, {'NO': 'motorcykeldæk', 'DK': 'Motorcykeldæk & scooterdæk'}, {'NO': 'Go-cart-dæk', 'DK': 'gokartdæk'}, {'NO': 'ophæng', 'DK': 'hjulophæng'}, {'NO': 'parhardstag', 'DK': 'parhardstang'}, {'NO': 'stabstag', 'DK': 'stabilisator'}, {'NO': 'styredempere', 'DK': 'styrdæmpere'}, {'NO': 'Støddæmper\xa0 ', 'DK': 'Støddæmpere'}, {'NO': 'tillinger', 'DK': 'bøsning'}, {'NO': 'ogre varer', 'DK': 'andre varer'}, {'NO': 'Off-road udstyr', 'DK': '4x4 tilbehør'}, {'NO': 'drivlinje', 'DK': 'transmissionsystem'}, {'NO': 'ophæng', 'DK': 'hjulophæng'}, {'NO': 'skærmtiløger', 'DK': 'Skærm-kit'}, {'NO': 'vinsjer', 'DK': 'spil'}, {'NO': 'vinsjutstyr', 'DK': 'spiludstyr'}, {'NO': 'bærbar vinsjer', 'DK': 'bærbare spil'}, {'NO': 'vinsjplater', 'DK': 'spilmonteringsplade'}, {'NO': 'afstogsstykker', 'DK': 'Afstandsstykker\n'}, {'NO': 'kofangere', 'DK': 'kofanger'}, {'NO': 'oget tilbehør', 'DK': 'Andre tilbehør'}]


def translating(string):
    print(translate)
    print(string)

    for row in translate:
        NO=row["NO"]
        DK = row["DK"]


        string=string.replace(NO,DK)
    print(string)
    return string


translating("Dekk Maxxis M8080 Mudzilla 33x13.5-15 110L")

在这个例子中,我如何能忽略大小写并替换单词应该将Dekk替换为dæk 或者当Dekk替换为Dæk时,当Dekk替换为Dæk时

我需要在阵列上复制这个


Tags: nostringngtranslaterowstprintdk
3条回答

我会检查第一个字母是否是大写字母,如果是,请将其转换为小写,替换,然后再次大写。如果这个词没有大写,你可以替换它

def translating(string):
        print(translate)
        print(string)

        for row in translate:
            NO=row["NO"]
            DK = row["DK"]

            if string[0].isupper() :
               string=string.lower().replace(NO,DK).capitalize()
            else:
               string=string.replace(NO,DK)

        print(string)
        return string


    translating("Dekk Maxxis M8080 Mudzilla 33x13.5-15 110L")

更新

def translating(string):
    print(translate)
    print(string)

    for row in translate:
        NO=row["NO"]
        DK = row["DK"]

        if string.find(NO.capitalize()):
            string=string.replace(NO,DK.capitalize())

        string=string.replace(NO,DK)

    print(string)
    return string

在为输出字符串维护相同的大小写时,您似乎没有付出任何代价

您只需使用

string.casefold()

选项删除python字符串中存在的所有大小写区别

这就是函数的外观

def translating(string):
string = string.casefold()


for row in translate:
    NO=row["NO"]
    DK = row["DK"]


    string=string.replace(NO,DK)
print(string)

您也可以使用string.upper()将整个字符串转换为大写,或者string.lower()将整个字符串转换为小写,然后使用string.replace()。但是在这些方法中,“NO”键中存储的值必须与相应的大小写匹配

字符串类型不支持此操作。您最好使用带有re.IGNORECASE选项的正则表达式子方法。 包装为“re”

相关问题 更多 >