以下是我所拥有的:
stem_text = "x^3+21x^2+1x+6"我想把它改为:
stem_text = "x^3+21x^2+x+6"下面是我的代码:
indices = [m.start() for m in re.finditer("1x", stem_text)]
for i in indices:
if stem_text[i-1] not in ["0","1","2","3","4","5","6","7","8","9"]:
stem_text = stem_text.replace(stem_text[i:i+2],"x")`但是,它仍在取代"1x“这两种情况。
我利用这两篇文章让我想到了我应该做的事情,但事实并非如此:
发布于 2016-03-30 17:17:14
如果方程只有加法运算符:
stem_text = "x^3+21x^2+1x+6"
new_string = stem_text.replace('+1x','+x')
print(new_string)输出:
x^3+21x^2+x+6如果方程有多个运算符:
stem_text = '1x+1x-1x/1x*1x+10x'
op_list = ['','+','-','*','/']
#list of operations in equation
for each_op in op_list:
stem_text = stem_text.replace(each_op+'1x',each_op+'x') #'each_op + 1x' is used to prevent replacing nos. like 21x,31x etc
print(stem_text)输出:
x+x-x/x*x+10x注:这是一种低效的解决方案。
发布于 2016-03-30 17:08:01
将\b添加到模式1x中以实现完全匹配:单词1x,而不是匹配的21x或其他包含1x的单词
import re
stem_text = "x^3+21x^2+1x+6"
print(re.sub(r'\b1x\b', r'x', stem_text))结果是
x^3+21x^2+x+6阅读python 文档
发布于 2016-03-30 17:16:25
如果您只想替换"1x“,请使用下面的示例:
stem_text = "x^3+21x^2+1x+6"
indices = [x for x in stem_text.split("+")]
for i in indices:
if len(i) == 2 and i == "1x": stem_text = stem_text.replace(i + "+", "x+")
print stem_text输出:x^3+21x^2+x+6
如果要替换"x“之前的任何数字,请使用以下示例:
stem_text = "x^3+21x^2+1x+6+2x+4x+0x"
indices = [x for x in stem_text.split("+")]
Int = ["1", "2", "3", "4", "5", "6", "7", "8", "9", "0"]
for x in indices:
for i in Int:
if x == i + "x": stem_text = stem_text.replace(i + "x", "x")
print stem_text输出:x^3+x^2+x+6+x+x+x
https://stackoverflow.com/questions/36315137
复制相似问题