我想请你帮忙。我已经开始学习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))
如果有人能帮助我,我会很高兴。
提前谢谢你, 大卫
答案 0 :(得分:0)
这里有一些开始的地方:
string1 in
string2
检查一个字符串是否在另一个字符串中(例如,' bcd' in' abcdefg' - > True)答案 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))'
re.sub(pattern, repl, string, count=0, flags=0)
返回通过替换最左边获得的字符串
由字符串中的模式非重叠出现
替换代表。
()
用于捕捉群组;
*?
是non-greedy qualifier,其匹配为 little 文本。