将URL标题转换为标准标题

时间:2017-10-20 15:56:27

标签: python data-conversion

假设我有以下列表

 [('2015-2016-regular', '2016-playoff'), ('2016-2017-regular', '2017-playoff'), ('2017-2018-regular',)]

代表前两个完整的NHL年份和当前的年份。

我想转换它以便它会给我

[('Regular Season 2015-2016 ', 'Playoff 2016'), ('Regular Season 2016-2017', 'Playoff 2017'), ('Regular Season 2017-2018 ',)]

我的英语很糟糕,写作将被用作标题。上一个清单中有错误吗?

我如何构建一个能够在80个字符长的范围内进行此类转换的函数?

2 个答案:

答案 0 :(得分:0)

这有点hacky,但这是一个奇怪的问题和用例哦哦。由于您有一组非常有限的替换,您可以使用dict来定义它们,然后使用字符串格式的列表理解:

repl_dict = {
    '-regular': 'Regular Season ',
    '-playoff': 'Playoff '
}
new_list = [
    tuple(
        '{}{}'.format(repl_dict[name[name.rfind('-'):]], name[:name.rfind('-')]) 
        for name in tup
    ) 
    for tup in url_list
]

答案 1 :(得分:0)

我试过这个。所以,我解开了元组。我知道我必须分开哪些部分以及加入哪些部分并做必要的事情。 capitalize()函数用于将第一个字母设为大写。另外我需要注意元组是否有一个或两个元素。

l = [('2015-2016-regular', '2016-playoff'), ('2016-2017-regular', '2017-playoff'), ('2017-2018-regular',)]
ans = []
for i in l:
    if len(i)==2:
        fir=i[0].split('-')
        sec = i[1].split('-')
        ans.append((fir[2].capitalize()+" "+fir[0]+'-'+fir[1],sec[1].capitalize()+" "+sec[0]))
    else:
        fir=i[0].split('-')
        ans.append((fir[2].capitalize()+" "+fir[0]+'-'+fir[1],))
print ans

输出:

[('Regular 2015-2016', 'Playoff 2016'), ('Regular 2016-2017', 'Playoff 2017'), ('Regular 2017-2018',)]