我得到了一根类似于“2021年1月29日”的绳子。我想转换瑞典子字符串“jan”。对应的英文月份名称,在本例中为" Jan“,其结果将是”2021年1月29日“。然后,我可以使用这个字符串将其转换为date对象。
我有一个字典,它有一个键:value和瑞典键名,相应的英文月名作为值:
monthNameDictionary = {
"jan.": "Jan",
"feb.": "Feb",
"mars": "Mar",
"apr.": "Apr",
"maj": "May",
"juni": "Jun",
"juli": "Jul",
"aug.": "Aug",
"sep.": "Sep",
"okt.": "Oct",
"nov.": "Nov",
"dec.": "Dec",
}如何使用此方法或其他方式将字符串转换为具有英文月份名称的字符串?
发布于 2021-06-02 08:39:32
为了完整起见:如果您真的想替换字符串,请使用此方法(假设要替换的每个字符串最多只出现一次):
monthDict = {
"jan.": "Jan",
"feb.": "Feb",
"mars": "Mar",
"apr.": "Apr",
"maj": "May",
"juni": "Jun",
"juli": "Jul",
"aug.": "Aug",
"sep.": "Sep",
"okt.": "Oct",
"nov.": "Nov",
"dec.": "Dec",
}
inStr = "29 jan. 2021"
for month in monthDict: # iterating directly over a dict iterates over it's keys
inStr = inStr.replace(month, monthDict[month])
print(inStr)编辑:如果同一个单词多次出现,请使用inStr = re.sub(month, monthDict, inStr)。
发布于 2021-06-02 08:38:14
这应该能行,
>>> monthNameDictionary = {
"jan.": "Jan",
"feb.": "Feb",
"mars": "Mar",
"apr.": "Apr",
"maj": "May",
"juni": "Jun",
"juli": "Jul",
"aug.": "Aug",
"sep.": "Sep",
"okt.": "Oct",
"nov.": "Nov",
"dec.": "Dec",
}
>>> s = "29 jan. 2021"
>>> op = s.split(" ")
>>> op
['29', 'jan.', '2021']
>>> op[1] = monthNameDictionary[op[1]]
>>> op
['29', 'Jan', '2021']
>>> " ".join(op)
'29 Jan 2021'
>>> 如果您喜欢单线解决方案,这里是
>>> " ".join([monthNameDictionary.get(i, i) for i in s.split(" ")])
'29 Jan 2021'
>>> 发布于 2021-06-02 08:35:59
您可以只对这种特定的格式使用strptime,如下所示:
import datetime as dt
date_obj = dt.datetime.strptime('29 jan. 2021', '%d %b. %Y')我通常建议查看此页面,以了解如何解析日期字符串:https://strftime.org/
最后,如果要将其转换回另一种格式,则可以使用strftime
print(date_obj.strftime('%d %b %Y'))编辑:我看到你有挪威语?在你的问题中的日期,需要转换成英语。加上几个月的格式变化
以下是解决您的问题的通用解决方案
import datetime as dt
import locale
locale.setlocale(locale.LC_ALL, "nn_NO")
dates = ['29 apr. 2021', '20 mars 2021', '1 okt. 2019', '5 juni 1990']
date_objs = []
for d in dates:
fmt = '%d %b. %Y' if '.' in d else '%d %B %Y'
date_objs.append(dt.datetime.strptime(d, fmt))
print(date_objs)https://stackoverflow.com/questions/67801627
复制相似问题