Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/318.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
替换要翻译的字符串仅适用于Python中的第一个单词_Python - Fatal编程技术网

替换要翻译的字符串仅适用于Python中的第一个单词

替换要翻译的字符串仅适用于Python中的第一个单词,python,Python,我有一个循环,我试着找几个月的时间把它们翻译成法语。它起作用了,但是当我有两个月的时间在同一个字符串中时,只有第一个被翻译 for x in results: if "January" in datestring: x["auction_date"] = datestring.replace("January", "janvier") elif "February" in datestring: x["auction_date"] = dates

我有一个循环,我试着找几个月的时间把它们翻译成法语。它起作用了,但是当我有两个月的时间在同一个字符串中时,只有第一个被翻译

for x in results:
    if "January" in datestring:
        x["auction_date"] = datestring.replace("January", "janvier")

    elif "February" in datestring:
        x["auction_date"] = datestring.replace("February", "février")

...

如果字符串为
“2019年5月31日-2019年6月1日”
,则结果为
“2019年5月31日-2019年6月1日”

只需不要执行
elif
部分

for x in results:

    if "January" in datestring:
        datestring = datestring.replace("January", "janvier")

    if "February" in datestring:
        datestring = datestring.replace("February", "février")
    # ...
    x["auction_date"] = datestring
如果你有动力,你甚至可以在一条线上完成:

datestring.replace(“一月”、“一月”).replace(“二月”、“二月”)#……
作为replace,如果没有匹配的字符串,请不要进行替换

作为一种更具可读性的方式:

months = [("janvier", "january"), ("fevrier", "february"), ("mars", "march")]

for french_m, english_m in months:
    datestring.replace(english_m, french_m)

elif
更改为
if
您还可以通过在EN和FR中列出-month来改进您的代码,如果它们不是
,则查找并清除
,否则
部分太好了,现在它将只替换
“June”
在示例中,您应该使用一个
列表(EN名称,FR名称)
元组而不是两个平行列表。@Brunodesshuilliers我会解决这个问题,谢谢你指出(我认为这些列表可以在其他地方使用)@BlueSheepToken作为一般规则,“平行列表”是个坏主意-它们描述的是语义上的映射,但关系是隐式的(使用它们的方式)而不是显式的(就像使用正确的映射一样)并且有些脆弱(对一个列表进行排序,您的映射被破坏)。使用显式映射(dict或元组列表)更显式,也更健壮。显式映射不会阻止您“在其他地方使用列表”:
en_months=[en代表en,fr代表月份]