0

テキストの文字列を正規化したいと思います。そのため、句読点と非アルファベット文字(絵文字を区別しないため)を保持したいのですが、同時に2つのアルファベット文字と非アルファベット文字の間に空白を作成します。たとえば、次の文字列:

"*I love u*"
"Hi, life is great:)hehe"
"I will go uni.cul"

次のように変換する必要があります。

"* I love u *"
"Hi , life is great :) hehe"
"I will go to uni . cul"

これを行うための定期的な表現を書く方法を教えてください。前もって感謝します。

4

2 に答える 2

4

この式の一致を置き換えることができます:

(?<=[^\w\s])(?=\w)|(?<=\w)(?=[^\w\s])

スペースで

例えば:

re.sub(r'(?<=[^\w\s])(?=\w)|(?<=\w)(?=[^\w\s])', ' ', str)
于 2013-03-13T20:12:53.660 に答える
2

これを試して:

x = '''*I love u*
    Hi, life is great:)hehe
    I will go uni.cul'''

def rep(matchobj):
    return ' ' + matchobj.group(0) + ' '

print re.sub('[^a-zA-Z0-9\s]+', rep, x).strip()
于 2013-03-13T20:12:52.297 に答える