替换要翻译的字符串仅适用于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代表月份]