如何更改字符串的顺序?例如
mys='4002-10-21'
Run Code Online (Sandbox Code Playgroud)
预期结果:
'4002-21-10'
Run Code Online (Sandbox Code Playgroud)
我尝试过的:
我可以枚举分割的字符串,然后像1-3-2那样重新排列序列
newlist=list()
for i, v in enumerate(mys.split('-')):
newlist.append(v)
Run Code Online (Sandbox Code Playgroud)
如果您真的想重新格式化datetime字符串,我建议您将字符串解析为datetime对象并根据需要对其进行格式化:
import datetime
def rearrange(*args):
return [datetime.datetime.strptime(arg, '%Y-%m-%d').strftime('%Y-%d-%m') for arg in args]
Run Code Online (Sandbox Code Playgroud)
>>> rearrange('4002-10-21', '4002-10-28')
['4002-21-10', '4002-28-10']
Run Code Online (Sandbox Code Playgroud)
有了operator.itemgetter你可以得到一个呼叫多个项目:
>>> from operator import itemgetter
>>> '-'.join(itemgetter(0,2,1)(mys.split('-')))
'4002-21-10'
Run Code Online (Sandbox Code Playgroud)
使用字符串格式,您可以从参数中选择值:
>>> "{0}-{2}-{1}".format(*mys.split('-'))
'4002-21-10'
Run Code Online (Sandbox Code Playgroud)
随着re.sub你可以捕捉组和重新排序(假设位):
>>> import re
>>> re.sub(r'(\d+)-(\d+)-(\d+)', r'\1-\3-\2', mys)
'4002-21-10'
Run Code Online (Sandbox Code Playgroud)
如果你需要在这个熊猫(如在评论暗示),您可以使用基于正则表达式的方法均DataFrame.replace与Series.str.replace,例如(添加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
Run Code Online (Sandbox Code Playgroud)