2015-04-29 77 views
0

我正在寻找一种Python方式来将字符串“Main St & 1st St”更改为字符串“1st St & Main St”。基于Python中的指定字符重新排序字符串

我知道我可以做一些事来的效果:

intersection = "Main St & 1st St" 
intersectionList = intersection.split(" & ") 
reversedIntersection = (" & ".join(intersectionList[::-1])).strip() 

但它只是似乎不必要多级,我想知道如果有一个更有效的方法,一个内置的方法,等等。 ..可以更好地完成相同的目标。

+3

'reversedIntersection =( “&”。加入(intersection.split( “&”)[:: - 1]))。条()'。在那里,现在你一步到位了。 – Kevin

+0

''&'。join(list(reversed(s.split('&')))) –

+0

@ChinmayKanchi,你就在这里。结果应该是一个字符串,而不是一个列表。 – Kevin

回答

1

我不认为你的方法是多步骤。我能找到描述你想要做什么的捷径是:

  1. 一个字符串

  2. 在与号拆呢

  3. 扭转子

  4. 写下来子字符串,按照&号分隔它们

这正是你的代码所做的。 如果你想你的代码更加紧凑,你可以在最后离开.strip(),因为它是不是真的有用,重写第二和第三行是这样的:

reversedIntersection = (" & ".join(intersection.split(" & ")[::-1]))

我不知道的任何内置方法,因为您可以使用大致相同的工作对其进行编码,因此可以用它来描述它,但这不是一个常见问题。

2
original[original.find(" & ")+3:]+ " & " +original[:original.find(" & ")] 

>>> original = "Main St & 1st St" 
>>> original.find(" & ") 
7 
>>> original[:original.find(" & ")] 
'Main St' 
>>> original[original.find(" & ")+3:] 
'1st St' 
>>> original[original.find(" & ")+3:]+ " & " +original[:original.find(" & ")] 
'1st St & Main St' 

或使一个函数

>>> def new(s): 
...  x = " & " 
...  if x not in s: return s 
...  else: 
...    return s[s.find(x)+3:]+x+s[:s.find(x)] 
... 
>>> new(original) 
'1st St & Main St' 
>>> new("2nd ave. & 6th st.") 
'6th st. & 2nd ave.' 
相关问题