implicit class IntContext(val sc: StringContext) {
def i(args: Any*): Int = {
val orig = sc.s(args: _*)
orig.replace(" ", "").toInt
}
}
i"1 000 000" // res0: Int = 1000000
您如何获取此列表并阅读日期并将其更改为仅写出月份,例如2015年2月23日阅读二月或2015年3月2日阅读三月?
日期不断变化,所以我只想读取第一个数字并制作 ['Time Period >>', '2/23/2015', '3/2/2015', '3/9/2015', '3/16/2015', '3/23/2015', '3/30/2015', '4/6/2015', '4/13/2015']
语句,将其更改为与数字对应的月份。
答案 0 :(得分:6)
您可以使用datetime
模块执行此操作。
示例 -
import datetime
datestring = '2/23/2015'
d = datetime.datetime.strptime(datestring ,'%m/%d/%Y')
d.strftime('%B')
>>> 'February'
或一行 -
import datetime
datestring = '2/23/2015'
datetime.datetime.strptime(datestring ,'%m/%d/%Y').strftime('%B')
>>> 'February'
答案 1 :(得分:1)
我们将使用strptime
将您的字符串转换为datetime对象。然后我们会使用strftime
将这些转换为仅显示月份的字符串。
这比构建月/数字组合字典更容易。它确实要求所有日期字符串具有相同的格式。我对此的假设是form.action
onclick
在这里,您可以看到我循环遍历您的字符串列表,但忽略了第一个值(因为它不是您示例中的日期)。每个都转换为日期时间,然后返回到月份,显示为字符串。
答案 2 :(得分:0)
另一种方法是使用字典,其中keys
是月份编号,values
是月份名称。遍历每个项目,并将字符串拆分为/
,然后获取第一个元素,即月份编号。然后使用月号引用字典以获取其对应的名称。
monthDictionary = {'1': 'January', '2': 'February', '3': 'March', '4': 'April', '5': 'May',
'6': 'June', '7': 'July', '8': 'August', '9':'September', '10':'October',
'11': 'November', '12': 'December'}
l = ['Time Period >>', '2/23/2015', '3/2/2015', '3/9/2015', '3/16/2015', '3/23/2015', '3/30/2015', '4/6/2015', '4/13/2015']
for d in l[1:]:
monthNum = d.split('/')[0]
print monthDictionary[monthNum]
答案 3 :(得分:0)
如果您知道输入有效,那么您可以使用更高效的代码(如果需要):
In [1]: import calendar
In [2]: from datetime import datetime
In [3]: dates = ['2/23/2015', '3/2/2015', '3/9/2015', '3/16/2015', '3/23/2015', '3/30/2015', '4/6/2015', '4/13/2015']
In [4]: %timeit [datetime.strptime(s, "%m/%d/%Y").strftime('%B') for s in dates]
The slowest run took 1373.48 times longer than the fastest. This could mean that an intermediate result is being cached
10000 loops, best of 3: 128 µs per loop
In [5]: %timeit [calendar.month_name[int(s.partition('/')[0], 10)] for s in dates]
10000 loops, best of 3: 32.3 µs per loop
calendar.month_name[int(s.partition('/')[0], 10)]
明显更快。
答案 4 :(得分:-1)
我只是创建一个函数,然后迭代列表并调用函数传递日期。
def dateToMonth(date):
months = {1:"Jan", 2:"Feb", 3:"Mar"}
month = date.split("/")[0]
return months[int(month)]
这个函数的作用是接受你的字符串日期,根据'/'字符的位置将它分成一个数组。
然后它在字典中查找“02”转换为一个int,它返回到月[2]并返回“Feb”