0

我有一个正在运行的应用程序,它错误地将 u'text' 存储到所有数据库字段中。我现在需要创建一个脚本来读取这些字段并将 u'text' 替换为文本。

任何人都可以帮助我如何在 python 中编写这样的正则表达式,它会读取以 u' 开头的字符串的开头和以 ' 结尾的字符串结尾,然后什么都不替换它们。我尝试了几种方法,但我非常正则表达式不好。

任何帮助将不胜感激,

4

2 回答 2

3

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
于 2013-03-24T09:30:25.433 回答
1

这应该这样做:

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
于 2013-03-23T15:01:15.663 回答