2012-03-23 180 views
3

说,我想改变字符串 'A =(X + 2.)*(Y + 3.) - '如何在PYTHON中的每个数字后添加一个字符串?

“A =(X + 2.0e0)*(y + 3.0e0) - 1.0e0'。

每个数字如2.或只是2应该改变。这个怎么做?

非常感谢!

+0

定义' “号”'。例如:“1.2.3 4.5 6,7.8,9.a.6.c.0e891.0”应该是什么结果? – bezmax 2012-03-23 22:02:13

+0

格式的“数字”将是2.或2否1.2.3东西将存在于字符串中。谢谢 – agent99 2012-03-23 22:04:32

回答

6

给你写的评论,这样的正则表达式应该工作:

import re 

str = 'A = (x+2.)*(y+3.)-1' 
print re.sub(r'(\d+)\.?',r'\1.0e0',str) 

输出:

A = (x+2.0e0)*(y+3.0e0)-1.0e0 

正则表达式的说明:

  • (...) - 意味着捕捉组,你需要到捕获更换
  • \d期间重用 - 意味着任何数量的,相当于[0-9]
  • + - 装置,1个或更多次数,相当于{1,}
  • \.? - 意味着我们想要0或1 dot?相当于{0,1}

在更换:

  • \1 - 意味着我们要采取第一捕获组和插入在这里
+0

Added对发生了什么的一些解释。 – bezmax 2012-03-23 22:14:34

+0

非常感谢你最大!它现在有效。 – agent99 2012-03-24 02:12:46

2

你会想看看re module。具体而言,re.sub()。通读该功能的整个文档。它可以做一些相当有力的事情。无论是这样或者像for match in re.findall()构造。

+0

谢谢。我已经尝试过,但我不知道如何将数字传递给替代输出。就像我可以把'A = x * 2 + y + 3'翻译成'A = x * something + y + something',但是我无法让它知道2和3 ... – agent99 2012-03-23 22:12:00

相关问题