1

まだPythonについて頭を悩ませていますが、この関数のパフォーマンスまたは読みやすさを改善できるのでしょうか?

def multi_replace_words(sentences, words, replace_str):
    """Replace all words in the sentences list with replace_str
    ex. multi_replace_words(['bad a list', 'og bad', 'in bady there bad2', 'another one', 'and bad. two'], ['bad','bad2']', 'EX')
    >> ['EX a list', 'og EX', 'in bady there EX','another one','and EX two']
    """
    docs = []
    for doc in sentences:
        for replace_me in words:
            if(replace_me in doc.encode('ascii', 'ignore')):
                doc = re.sub('((\A|[^A-Za-z0-9_])'+replace_me+'(\Z|[^A-Za-z0-9_]))', ' ' + replace_str+' ', doc)
        docs.append(doc)
    return docs

ありがとう :)

4

2 に答える 2

1

このようなもの:

In [86]: def func(lis,a,b):
    strs= "|".join("({0}{1}{2})".format(r'\b',x,r'\b[;",.]?') for x in a)
    for x in lis:
        yield re.sub(strs,b,x)
   ....:         

In [87]: lis
Out[87]: ['bad a list', 'og bad', 'in bady there bad2', 'another one', 'and bad. two']

In [88]: rep=['bad','bad2']

In [89]: st="EX"

In [90]: list(func(lis,rep,st))
Out[90]: ['EX a list', 'og EX', 'in bady there EX', 'another one', 'and EX two']

In [91]: rep=['in','two','a']

In [92]: list(func(lis,rep,st))
Out[92]: ['bad EX list', 'og bad', 'EX bady there bad2', 'another one', 'and bad. EX']
于 2013-01-18T23:02:20.327 に答える
0

replace()を使用してみてください。文字列に作用し、一連の文字のすべてのインスタンスを別の文字に置き換えます。ここからの例は、replaceがどのように機能するかを示しています。

#!/usr/bin/python

str = "this is string example....wow!!! this is really string";
print str.replace("is", "was");
print str.replace("is", "was", 3);
于 2013-01-18T23:04:05.627 に答える