在我的程序中,用户输入一个我在发送之前处理的术语。此过程的一部分是将“and”、“or”和“not”的所有实例更改为大写字母,但其余部分保持不变。
我不能使用string.upper()
,因为它将所有内容都更改为大写;或者string.replace()
因为如果'and' 在字符串中的另一个单词中,例如'salamander',它也会将其更改为'salamANDer'。我认为我最好的选择是正则表达式re.sub()
函数。这使我可以更改完美的完整单词。下一个问题:我必须为re.sub()
我想做的每一个改变做一个函数。是否可以发表一份声明来完成所有更改?我所做的并没有错,但我认为它不一定是好的做法:
>>import urllib2
>>import re
>>query = 'Lizards and Amphibians not salamander or newt'
>>query=re.sub(r'\bnot\b', 'NOT',query)
>>query=re.sub(r'\bor\b', 'OR',query)
>>query=re.sub(r'\band\b', 'AND',query)
>>query = urllib2.quote("'"+query+"'")
>>print query
%27Lizards%20AND%20Amphibians%20NOT%20salamander%20OR%20newt%27