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

В цикле if, если i = aaaa # b, как получить значение после hash.should мы используем rsplit для получения значения?Разделить строку в python

ответ

1
a = "aaaa#b:c:" 
print(a.split(":")[0].split("#")[1]) 
+0

Это предполагает, что 'i' содержит '#'. 'split ('#', 1)' и проверка длины результата будет более безопасной. – tKe

1

Я предлагаю от: Python Docs

str.rsplit ([ПИЯ [, maxsplit]])

Возвращает список слов в строке, используя сен как разделитель строка. Если задано maxsplit, выполняется самое большее максимальное расщепление maxsplit, самых правых. Если sep не указан или None, любая строка пробела является разделителем. За исключением разделения справа, rsplit() ведет себя как , как split(), который подробно описан ниже.

поэтому, чтобы ответить на ваш вопрос да.

EDIT:

Это зависит от того, как вы хотите, чтобы индексировать строки тоже, похоже, 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] 
Смежные вопросы