Python - Как напечатать определенный текст - PullRequest
1 голос
/ 08 августа 2011
def handler_users_answ(coze, res, type, source):
    if res:
        if res.getType() == 'result':
            aa=res.getQueryChildren()
            if aa:
                print 'workz1'
                for x in aa:
                    m=x.getAttr('jid')
                    if m:
                        print m

, поэтому этот код возвращает мне такие значения:

roomname@domain.com/nickname1
roomname@domain.com/nickname2

и т. Д., Но я хочу, чтобы он печатал значение только после '/'.как:

nickname1
nickname2

Заранее спасибо.

Ответы [ 4 ]

2 голосов
/ 08 августа 2011

Вы можете использовать rpartition, чтобы получить деталь после последней \ в строке.

1 голос
/ 09 августа 2011

Чтобы полностью разобрать и проверить правильность JID, см. этот ответ . Есть куча странных маленьких крайних случаев, которые вы можете не ожидать.

1 голос
/ 09 августа 2011

Вы можете использовать rsplit , который сделает правильную форму разбиения:

a = 'roomname@domain.com/nickname1'
try:
    print a.rsplit('/')[1][1]
except IndexError:
    print "No username was found"

Я думаю, что это эффективно и читабельно.Если вам действительно нужно, чтобы это было быстро, вы можете использовать rfind :

a = 'roomname@domain.com/nickname1'
index = a.rfind('/')
if index != -1:
    print a[index+1:]
else:
    print "No username was found"
1 голос
/ 08 августа 2011
a = 'roomname@domain.com/nickname1'

b=a.split('/');
c=b[1];
...