我有一個正在運行的應用程序,它已經將u'text'錯誤地存儲到所有數據庫字段中。我現在需要創建一個腳本來閱讀這些字段,並用文本替換u'text。python正則表達式從unicode輸出中刪除u'some文本'
誰能幫我,我怎麼可以用Python語言編寫這樣的正則表達式會讀它用U「開頭的字符串與結束,結束」字符串的開頭,然後用什麼代替他們。我試了幾個但在正則表達式上卻很糟糕。
任何幫助將是非常讚賞,
我有一個正在運行的應用程序,它已經將u'text'錯誤地存儲到所有數據庫字段中。我現在需要創建一個腳本來閱讀這些字段,並用文本替換u'text。python正則表達式從unicode輸出中刪除u'some文本'
誰能幫我,我怎麼可以用Python語言編寫這樣的正則表達式會讀它用U「開頭的字符串與結束,結束」字符串的開頭,然後用什麼代替他們。我試了幾個但在正則表達式上卻很糟糕。
任何幫助將是非常讚賞,
這應做到:
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
注意,你可能有一些字符串而不是由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
嗨jsedev,謝謝。它解決了,但我有一個奇怪的問題,當我在循環內使用它返回','.join(re.sub(「^ u'(。*)'$」,r'\ 1',i)for i in value_list)它只能在第一個元素上工作 – 2013-03-23 15:29:22
您需要使用列表解析:'','.join([re.sub(「^ u'(。*)'$」,r'\ 1',i )for i in value_list])' – isedev 2013-03-23 15:31:20
仍然是同一個問題: – 2013-03-23 15:36:07