我想用另一个字符串替换字符串 - 问题是我需要原始案例保持原样.如果字符串以大写字母开头,我希望替换也以大写字母开头.所以我尝试了这个:
$text =~s/\b(Abc|abc)\b/(Xyz|xyz)/g;
Run Code Online (Sandbox Code Playgroud)
但它用"(Xyz | xyz)"替换"Abc"或"abc"的每个匹配.所以我猜测在更换中使用管道是不可能的?
我也试过以下,它完全正常:
$text =~s/\bAbc\b/Xyz/g;
$text =~s/\babc\b/abc/g;
Run Code Online (Sandbox Code Playgroud)
...但我真的希望我只用一行代码才能做到这一点.如果在一个正则表达式中不可能有两个替换,有没有其他方法来保留字符串的原始情况?
根据文档,OneVsRest分类器支持多标签分类:http://scikit-learn.org/stable/modules/multiclass.html#multilabel-learning
这是我正在尝试运行的代码:
from sklearn import metrics
from sklearn.preprocessing import MultiLabelBinarizer
from sklearn.multiclass import OneVsRestClassifier
from sklearn.cross_validation import train_test_split
from sklearn.svm import SVC
x = [[1,2,3],[3,3,2],[8,8,7],[3,7,1],[4,5,6]]
y = [['bar','foo'],['bar'],['foo'],['foo','jump'],['bar','fox','jump']]
y_enc = MultiLabelBinarizer().fit_transform(y)
train_x, train_y, test_x, test_y = train_test_split(x, y_enc, test_size=0.33)
clf = OneVsRestClassifier(SVC())
clf.fit(train_x, train_y)
predictions = clf.predict_proba(test_x)
my_metrics = metrics.classification_report( test_y, predictions)
print my_metrics
Run Code Online (Sandbox Code Playgroud)
我收到以下错误:
Traceback (most recent call last):
File "multilabel.py", line 178, in <module>
clf.fit(train_x, train_y)
File "/sklearn/lib/python2.6/site-packages/sklearn/multiclass.py", line 277, in fit
Y = self.label_binarizer_.fit_transform(y)
File …Run Code Online (Sandbox Code Playgroud) 我有一个字符串$ data,用utf-8编码.我假设我不知道这个字符串是utf-8还是iso-8859-1.我想使用Perl Encode :: Guess模块来查看它是否是其中之一.我无法弄清楚这个模块是如何工作的.
我尝试了以下四种方法(来自http://perldoc.perl.org/Encode/Guess.html):
use Encode::Guess qw/utf8 latin1/;
my $decoder = guess_encoding($data);
print "$decoder\n";
Run Code Online (Sandbox Code Playgroud)
结果: iso-8859-1或utf8
use Encode::Guess qw/utf8 latin1/;
my $enc = guess_encoding($data, qw/utf8 latin1/);
ref($enc) or die "Can't guess: $enc";
my $utf8 = $enc->decode($data);
print "$utf8\n";
Run Code Online (Sandbox Code Playgroud)
结果:无法猜测:iso-8859-1或utf8 at encodage-windows.pl第25行,第18110行.
use Encode::Guess qw/utf8 latin1/;
my $decoder = Encode::Guess->guess($data);
die $decoder unless ref($decoder);
my $utf8 = $decoder->decode($data);
print "$utf8\n";
Run Code Online (Sandbox Code Playgroud)
结果: iso-8859-1或utf8 at encodage-windows.pl第30行,第18110行.
use Encode::Guess qw/utf8 latin1/;
my $utf8 = Encode::decode("Guess", $data);
print "$utf8\n";
Run Code Online (Sandbox Code Playgroud)
结果: …
这个小脚本读取文件,尝试将每一行与正则表达式匹配,并将匹配的行追加到另一个文件:
regex = re.compile(r"<http://dbtropes.org/resource/Film/.*?> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://dbtropes.org/resource/Main/.*?> \.")
with open("dbtropes-v2.nt", "a") as output, open("dbtropes.nt", "rb") as input:
for line in input.readlines():
if re.findall(regex,line):
output.write(line)
input.close()
output.close()
Run Code Online (Sandbox Code Playgroud)
但是,剧本在大约5分钟后突然停止.终端显示"Process stopped",输出文件保持空白.
输入文件可以在这里下载:http: //dbtropes.org/static/dbtropes.zip这是4.3Go n-triples文件.
我的代码有问题吗?还有别的吗?任何提示都将在这一个赞赏!