Python字符串函数参数替换

时间:2014-05-12 01:56:21

标签: python string function replace row

我想请你帮忙。我已经开始学习python,有一项任务我无法弄清楚如何完成。所以这就是。

我们有一个包含接下来4行的input.txt文件:

f(x, 3*y) * 54 = 64 / (7 * x) + f(2*x, y-6)

x + f(21*y, x - 32/y) + 4 = f(21 ,y)

86 - f(7 + x*10, y+ 232) = f(12*x-4, 2*y-61)*32 + f(2, x)

65 - 3* y = f(2*y/33 , x + 5)

任务是将“f”功能及其2个参数更改为分割。两个参数之间可以有任意数量的空格。例如,f(2,5)与f(2,5)相同,并且应该是(2/5),在代码运行之后在分割标记之前和之后恰好有一个空格。此外,如果其中一个参数是乘法或除法,则参数必须进入括号。例如:f(3,5 * 7)应该变为(3 /(5 * 7))。并且在一行中可以有任意数量的功能。所以输出应该如下所示:

(x / (3*y)) * 54 = 64 / (7 * x) + ((2*x) / (y-6))

x + ((21*y) / (x - 32/y)) + 4 = (21 / y)

86 - ((7 + x*10) / (y+ 232)) = ((12*x-4) / (2*y-61))*32 + (2 / x)

65 - 3* y = ((2*y/33) / (x + 5))

如果有人能帮助我,我会很高兴。

提前谢谢你, 大卫

2 个答案:

答案 0 :(得分:0)

这里有一些开始的地方:

  • 您可以使用string1 in string2检查一个字符串是否在另一个字符串中(例如,' bcd' in' abcdefg' - > True)
  • 您可以通过查找&f;(' f中)的位置来识别f()调用的内部 字符串,然后在找到时将1添加到索引(从1开始) a'('当你找到'时删除1)'。当你点击0时,你就完成了。
  • 您可以通过匹配的字符串将字符串拆分为列表 string1.split(string2)(例如,' a,b' .split(',') - > [' a',' b& #39]
  • 您可以使用。轻松格式化字符串 .format方法 (例如,'({0}%{1})' .format(string1,string2))

答案 1 :(得分:0)

使用re

In [84]: ss=r'f(x, 3*y) * 54 = 64 / (7 * x) + f(2*x, y-6)'

In [85]: re.sub(r'(f\()(.*?),(.*?)(\))', lambda m: '((%s) / (%s))'%(m.group(2), m.group(3)), ss)
Out[85]: '((x) / ( 3*y)) * 54 = 64 / (7 * x) + ((2*x) / ( y-6))'

说明:

  1. re.sub(pattern, repl, string, count=0, flags=0)返回通过替换最左边获得的字符串 由字符串中的模式非重叠出现 替换代表。

  2. ()用于捕捉群组;

  3. *?non-greedy qualifier,其匹配为 little 文本。