Python中等价于这两行Perl的代码是什么?

2 投票
3 回答
1177 浏览
提问于 2025-04-16 22:49

我需要在Python 2.x中找到这两行Perl代码的完全等价写法。

PERL:

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

PYTHON:

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

非常感谢你。

3 个回答

0

可以使用字符串的方法 replacesplit(或者用 re 模块里的 subsplit)。一般来说,了解一下正则表达式会很有帮助——大多数现代编程语言的实现(包括Python)都是基于Perl的。而你代码中的模式其实很简单:首先把所有的'('和')'都去掉,然后用','来分割字符串(我记得没错的话,我已经很多年没写过Perl了)。

4

使用正则表达式模块来尽量与Perl版本保持一致:

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

在脚本的开头,确保包含以下内容

import re
4
edge = edge.translate(None, '()')
verts = edge.split(',')

你可能还想在创建顶点时把字符串转换成整数,可以使用:

verts = map(int, edge.split(','))

撰写回答