如何更改字符串的顺序?例如:
mys='4002-10-21'预期结果:
'4002-21-10'我试过的是:
我可以枚举分裂的字符串,然后像1-3-2一样重新排列序列。
newlist=list()
for i, v in enumerate(mys.split('-')):
newlist.append(v)发布于 2017-10-15 15:03:15
使用operator.itemgetter,您可以通过一个调用获得多个项:
>>> from operator import itemgetter
>>> '-'.join(itemgetter(0,2,1)(mys.split('-')))
'4002-21-10'使用字符串格式,您可以从参数中选择值:
>>> "{0}-{2}-{1}".format(*mys.split('-'))
'4002-21-10'使用re.sub,您可以捕获组并重新排序(假设数字):
>>> import re
>>> re.sub(r'(\d+)-(\d+)-(\d+)', r'\1-\3-\2', mys)
'4002-21-10'如果您在熊猫中需要这一点(如注释中所暗示的那样),您可以在DataFrame.replace和Series.str.replace中使用基于正则表达式的方法,例如(为就地subs添加inplace=True ):
>>> import pandas as pd
>>> df = pd.DataFrame({'dates': ['4002-10-21']})
>>> df.dates.replace(r'(\d+)-(\d+)-(\d+)', r'\1-\3-\2', regex=True)
0 4002-21-10
Name: dates, dtype: object发布于 2017-10-15 15:04:26
如果您真的试图重新格式化日期时间字符串,我建议您将该字符串解析为datetime对象,并按您的意愿格式化它:
import datetime
def rearrange(*args):
return [datetime.datetime.strptime(arg, '%Y-%m-%d').strftime('%Y-%d-%m') for arg in args]>>> rearrange('4002-10-21', '4002-10-28')
['4002-21-10', '4002-28-10'] 发布于 2017-10-15 14:55:00
考虑到问题的背景,您的方法很好:
mys = '4002-10-21'
parts = mys.split('-')
mys = parts[0] + '-' + parts[2] + '-' + parts[1]
print(mys) # "4002-21-10"当然,它很脆弱,但如果是针对个人或一次性剧本,谁在乎呢?如果您需要更多的灵活性,那么您将需要更明确地描述约束的本质。
https://stackoverflow.com/questions/46756326
复制相似问题