Эквивалент этих двух строк Perl в Python? - PullRequest
2 голосов
/ 03 августа 2011

Мне нужно найти точный эквивалент этих двух строк Perl в Python 2.x

PERL:

foreach my $edge (@edges){
    $edge =~ s/[\(\)]//g;
    my @verts = split(/,/, $edge);

PYTHON:

for edge in edges:
    edge = ???
    verts = ???

Большое спасибо.

Ответы [ 3 ]

4 голосов
/ 03 августа 2011
edge = edge.translate(None, '()')
verts = edge.split(',')

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

verts = map(int, edge.split(','))
4 голосов
/ 03 августа 2011

Использование модуля regex, чтобы придерживаться версии Perl:

for edge in edges:
    edge = re.sub( '[()]', '', edge )
    verts = filter( None, re.split( ',', edge ) )

В верхней части скрипта обязательно включите

import re
0 голосов
/ 03 августа 2011

использовать строковые методы replace и split (или sub и split из re модуля).В общем, читайте о Регулярных выражениях - большинство современных реализаций языков (в том числе и с Python) основаны на Perls.И шаблоны в вашем коде очень просты: сначала вы удаляете все вхождения '(' и ')', а затем разбиваете строку на ',' (как я могу сказать, я не писал в perl годами)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...