lis中的地图转换

2024-04-27 03:38:54 发布

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

这是mylist的输入示例:

mylist = [['RWILY MORSHED', 7670315350025, 'August/2014, Iulie/2014, Septembrie/2014', 1620, 1620], ['AL BADRI MOHAMMED YAHYA TAWFEEQ', 7700119350028, 'Martie/2015, Aprilie/2015, Februarie/2015', 1620, 1620]]

我想要的结果是:

mylist = [['RWILY MORSHED', 7670315350025, 'August 2014, July 2014, September 2014', 1620, 1620], ['AL BADRI MOHAMMED YAHYA TAWFEEQ', 7700119350028, 'March 2015, April 2015, February 2015', 1620, 1620]]

基本上,我想把月份名称从罗马尼亚语转换成英语,并得到上述所需的输出(我需要所有的月份在同一个索引2的位置像在输出)!你知道吗

最后我得出结论:

conversionsEnNames = {"Ianuarie": "January", "Februarie": "February","Martie": "March", "Aprilie": "April","Mai": "May","Iunie": "June", "Iulie": "July","August": "August", "Septembrie": "September","Octombrie": "October", "Noiembrie": "November","Decembrie": "December"}

for i in mylist:
    i[2]=i[2].replace("/", " ")
    for j in i:
        if j in conversionsEnNames:
            j = conversionsEnNames[j]
            i[2]=j

print(mylist)

但这将打印:

[['RWILY MORSHED', 7670315350025, 'August 2014, Iulie 2014, Septembrie 2014', 1620, 1620], ['AL BADRI MOHAMMED YAHYA TAWFEEQ', 7700119350028, 'Martie 2015, Aprilie 2015, Februarie 2015', 1620, 1620]]

当然,这张地图从2014年开始就不起作用了!='Iulie'以便它可以将其转换为七月,我要修改什么以实现我的理想输出?非常感谢您抽出时间!你知道吗


Tags: alaugustmylistmohammedbadriseptembriemartieconversionsennames
3条回答

您还可以使用正则表达式(只是因为正则表达式很酷,而不是因为解决方案比其他的好)。下面是一个代码片段,用于在单个字符串中替换:

import re
def rep(m):
    if m.group(1) in conversionEnNames:
        return conversionEnNames[m.group(1)] + " " + m.group(2)
    else:
        return m.group(0)
test = "blah blah Iulie/2014 blah Februarie/2015 blih blah bluh"
result = re.sub(r"([A-Za-z]+)/(\d\d\d\d)", rep, test)

它应该屈服

"blah blah July 2014 blah February 2015 blih blah bluh"

你可以根据需要改进。你知道吗

应该可以了。你知道吗

for item in mylist:
    item[2] = item[2].replace('/', ' ')
    for roman, english in conversionsEnNames.items():
        item[2] = item[2].replace(roman, english)

您可以使用简单的dict查找

def convert_date(date_string, conversionsEnNames):

    parts = [part.split('/') for part in date_string.split(', ')]
    return ', '. join(conversionsEnNames[part[0]] + ' ' + part[1] for part in parts)

for line in mylist:
    line[2] = convert_date(line[2], conversionsEnNames)
mylist
[['RWILY MORSHED', 7670315350025, 'August 2014, July 2014, September 2014', 1620, 1620], 
['AL BADRI MOHAMMED YAHYA TAWFEEQ', 7700119350028, 'March 2015, April 2015, February 2015', 1620, 1620]]

相关问题 更多 >