2016-09-14 48 views
-2

我有一个Python变量(类型Unicode)的,其持有的查询语句开头的字符串的值:更改括号与的Varchar

CREATE TABLE afg_temp (tadm1_code INTEGER NOT NULL, tadm1_name VARCHAR(10) NOT NULL, test VARCHAR(4)); 

我需要更换每个VARCHAR occurence与254中的所有值 最初,我认为使用replace()函数就足够了,但这不会工作,因为括号中的数字是随机的。

有没有办法使用正则表达式来做到这一点?

+1

那么,你有没有尝试过什么呢?看起来像一个直接的任务。 [与正则表达式匹配括号](http://stackoverflow.com/questions/5302942/matching-parentheses-in-python-regular-expression)是一个解决的问题。 –

回答

4

用正则表达式:

import re 
query = 'CREATE TABLE afg_temp (tadm1_code INTEGER NOT NULL, tadm1_name VARCHAR(10) NOT NULL, test VARCHAR(4));' 
print re.sub(r'VARCHAR\([0-9]*\)','VARCHAR(254)',query) 
1
import re 

s='''CREATE TABLE afg_temp (tadm1_code INTEGER NOT NULL, tadm1_name VARCHAR(10) NOT NULL, test VARCHAR(4));''' 
re.sub('VARCHAR\([0-9]{1,3}\)','VARCHAR(254)',s) 

还有许多其他的解决方案,你甚至都不需要蟒蛇这一点。最简单的就是使用sed。

+0

如果你有VARCHAR(8000)呢? ;) –

+1

好的一点我看到你在几秒钟之前就得到了一个使用*的答案。我不会编辑我的答案,以避免减损答案的价值。从我+1 – e4c5