2010-10-12 81 views
1
  a="aaaa#b:c:" 
      >>> for i in a.split(":"): 
      ... print i 
      ... if ("#" in i): //i=aaaa#b 
      ...  print only b 

在循环,如果一个字符串,如果我= AAAA#B如何让我们使用的rsplit获得价值hash.should后的价值?拆分在python

回答

1
>>> a="aaaa#b:c:" 
>>> a.split(":",2)[0].split("#")[-1] 
'b' 
1
a = "aaaa#b:c:" 
print(a.split(":")[0].split("#")[1]) 
+0

这里假设'i'包含'#'。 'split('#',1)'并检查结果的长度会更安全。 – tKe 2010-10-12 12:34:54

1

我建议从:Python Docs

str.rsplit([SEP [,maxsplit]])

返回一个的字符串中的单词列表中,使用月作为分隔符 字符串。如果给出maxsplit,则最多可以执行maxsplit分割,最右边的分割是 。如果未指定sep或None,则任何空白字符串 都是分隔符。除了从右边划分之外,rsplit()的行为如同split(),这在下面详细描述。

所以回答你的问题是的。

编辑:

这要看你怎么想索引你的琴弦太,它看起来像RSTRING它与正确的,因此,如果您的数据始终是“最右”,你可以通过0(或1指数,不知道如何python索引),每次,而不是必须做返回的数组的大小检查。

-1

split会很好地完成这项工作。仅当您需要从最后一个'#'分割时才使用rsplit

a="aaaa#b:c:" 
>>> for i in a.split(":"): 
... print i 
... b = i.split('#',1) 
... if len(b)==2: 
...  print b[1] 
0

你真的需要使用拆分吗?拆分创建一个列表,所以也不是那么高效...

怎么样这样的:

>>> a = "aaaa#b:c:" 
>>> a[a.find('#') + 1] 
'b' 

,或者如果你需要特定的出现时使用正则表达式,而不是...

2

以下可以替代您的if声明。

for i in a.split(':'): 
    print i.partition('#')[2]