这是我的第一天Python,所以请原谅我这个问题
问题: 在文件中替换每次出现的 使用 TRIM(TRIM(CHR(09)FROM column_name)) trim(column_name)。我已经整理了如何进行模式搜索并熟悉re.sub()函数。
与我的案例匹配的模式是
p = re.compile ('trim\([a-z0-9_]+\)',re.I)
但是如何替换保留列名???
的匹配模式所需的输出例如如下:
input: select trim(API12), trim(FIELD_CODE) from table
output: select TRIM (TRIM (CHR (09) FROM API12)), TRIM (TRIM (CHR (09) FROM FIELD_CODE)) from table
答案 0 :(得分:1)
import re
s = 'select trim(API12), trim(FIELD_CODE) from table'
print re.sub(r'trim\((?P<col>[a-zA-Z0-9_]+)\)', 'TRIM (TRIM (CHR (09) FROM \g<col>))', s)
答案 1 :(得分:1)
工作代码:
import re
i = 'select trim(API12), trim(FIELD_CODE) from table'
re.sub(r"trim\((\w+)\)", r"TRIM (TRIM (CHR (09) FROM \1))", i)
re.I
,而是使用\w
,它等同于[a-zA-Z0-9_]
。\(\)
表示正常括号,()
表示分组\1
呈现第一个匹配组,\2
表示第二个匹配组。答案 2 :(得分:0)
我刚刚为自己整理了这个
感谢您的帮助!
import re
line = "select trim(API12), trim(FIELD_CODE) from dual"
output = re.sub(r'trim\(([a-zA-Z0-9_]+)\)',r'TRIM (TRIM (CHR (09) FROM\1))',line)
print output
<强>&GT;&GT;选择TRIM(TRIM(CHR(09)FROM API12)),TRIM(TRIM(CHR(09)FROM FIELD_CODE))来自双重