在python中更改字符串的顺序

sha*_*nuo 3 python

如何更改字符串的顺序?例如

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)

ded*_*z69 9

如果您真的想重新格式化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)


ran*_*mir 8

有了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.replaceSeries.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)