2012-03-23 178 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

相關問題