我有一个正在运行的应用程序,它错误地将 u'text' 存储到所有数据库字段中。我现在需要创建一个脚本来读取这些字段并将 u'text' 替换为文本。
任何人都可以帮助我如何在 python 中编写这样的正则表达式,它会读取以 u' 开头的字符串的开头和以 ' 结尾的字符串结尾,然后什么都不替换它们。我尝试了几种方法,但我非常正则表达式不好。
任何帮助将不胜感激,
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