首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >更改python中字符串的顺序

更改python中字符串的顺序
EN

Stack Overflow用户
提问于 2017-10-15 14:48:47
回答 8查看 9.4K关注 0票数 5

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

代码语言:javascript
复制
mys='4002-10-21'

预期结果:

代码语言:javascript
复制
'4002-21-10'

我试过的是:

我可以枚举分裂的字符串,然后像1-3-2一样重新排列序列。

代码语言:javascript
复制
newlist=list()
for i, v in enumerate(mys.split('-')):
    newlist.append(v)
EN

回答 8

Stack Overflow用户

回答已采纳

发布于 2017-10-15 15:03:15

使用operator.itemgetter,您可以通过一个调用获得多个项:

代码语言:javascript
复制
>>> from operator import itemgetter
>>> '-'.join(itemgetter(0,2,1)(mys.split('-')))
'4002-21-10'

使用字符串格式,您可以从参数中选择值:

代码语言:javascript
复制
>>> "{0}-{2}-{1}".format(*mys.split('-'))
'4002-21-10'

使用re.sub,您可以捕获组并重新排序(假设数字):

代码语言:javascript
复制
>>> import re
>>> re.sub(r'(\d+)-(\d+)-(\d+)', r'\1-\3-\2', mys)
'4002-21-10'

如果您在熊猫中需要这一点(如注释中所暗示的那样),您可以在DataFrame.replaceSeries.str.replace中使用基于正则表达式的方法,例如(为就地subs添加inplace=True ):

代码语言:javascript
复制
>>> 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
票数 9
EN

Stack Overflow用户

发布于 2017-10-15 15:04:26

如果您真的试图重新格式化日期时间字符串,我建议您将该字符串解析为datetime对象,并按您的意愿格式化它:

代码语言:javascript
复制
import datetime                                                                                   

def rearrange(*args):                                                                             
    return [datetime.datetime.strptime(arg, '%Y-%m-%d').strftime('%Y-%d-%m') for arg in args]
代码语言:javascript
复制
>>> rearrange('4002-10-21', '4002-10-28')
['4002-21-10', '4002-28-10']  
票数 9
EN

Stack Overflow用户

发布于 2017-10-15 14:55:00

考虑到问题的背景,您的方法很好:

代码语言:javascript
复制
mys = '4002-10-21'
parts = mys.split('-')
mys = parts[0] + '-' + parts[2] + '-' + parts[1]
print(mys)  # "4002-21-10"

当然,它很脆弱,但如果是针对个人或一次性剧本,谁在乎呢?如果您需要更多的灵活性,那么您将需要更明确地描述约束的本质。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46756326

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档