実行中のアプリケーションで、誤ってすべてのデータベース フィールドに u'text' が保存されてしまいました。これらのフィールドを読み取り、u'text' をテキストに置き換えるスクリプトを作成する必要があります。
u' で始まる文字列の先頭と ' で終わる文字列の終わりを読み取り、それらを何も置き換えないような正規表現を Python でどのように書くことができますか?正規表現の周りが悪い。
どんな助けでも大歓迎です、
u" "
文字列に一重引用符が含まれている場合は、代わりに で区切られた文字列がいくつかあることに注意してください。また、エスケープ シーケンスがある場合もあります。ast.literal_eval
あなたのためにすべてを処理できます:
from ast import literal_eval
def convert(original):
try:
result = literal_eval(original)
if isinstance(result, unicode):
return result
except ValueError:
pass
return original
これはそれを行う必要があります:
import re
re.sub("^u'(.*)'$",r'\1',"u'text'")
-> text
これは、先頭/末尾の文字がない単一の値の文字列で機能します (例: "u'text'")。
文字列内の u'text' をすべて置き換えたい場合は、代わりに次のようにします。
re.sub("u'([^']*)'",r'\1',STRING)
例えば:
re.sub("u'([^']*)'",r'\1',"u'value1',u'value2',u'value3'")
-> value1,value2,value3