【问题标题】:Write new file by matching strings from input file通过匹配输入文件中的字符串写入新文件
【发布时间】:2014-10-19 03:30:54
【问题描述】:

我有一些关于使用 Python 编写脚本的幼稚问题。

我有一些表单的输入文件

"{1,g,{Frog,12}}",(x**2+.7*x)/2**x
"{2,{g,h},{Pig,17}}",(.8*x**3-1.3*x)/2.5**x

等等,其中第一列的第一个和最后一个元素总是整数,第一列的第二个元素可以是字符串或列表,第一列的第三个元素是字符串,第二个column 是一个新变量的函数。

我想创建一个输出文件,它将每一行写入一个新文件,格式如下:

    if newstr==1gCow82:
        return eval((.2*x**2+x-.3)/1.8**x)
    elif newstr==1gFrog12:
        return eval((x**2+.7*x)/2**x)
    elif newstr==2ghPig17:
        return eval((.8*x**3-1.3*x)/2.5**x)

(我会在前面加上类似的东西

 def bignewfunction(a,b,c,d,x):
 newstr="".join(str(a),b,c,str(d))

手动)。

我不认为这应该那么难,但它可能需要一些我无法吸收的正则表达式机制(例如,如何转换字符串“{a1,b1,{c1,d1} }" 到一个没有引号、方括号或逗号的字符串)以及一些我不知道的 Python 文件创建。或者,如果我可以从输入文件的第一列中删除括号和引号可能会更容易,但这也需要我目前缺乏的类似脚本技能。

非常感谢任何帮助。提前致谢!

编辑已编辑以包含输入文件外观的更具体示例。

【问题讨论】:

  • 提供一些输入文件示例,其中包含您提到的所有数据类型(数字、字符串、列表)
  • 请提供一些示例输入数据以及在新文件中处理后相同数据的输出方式,以便其他人也可以查看他们是否正确执行。

标签: python regex string scripting


【解决方案1】:

我不熟悉 Python,但是一些带有正则表达式的伪代码可以帮助您:

prefix = ''
for (find = regexfind(/"((?:[^"\\]|\\.)*)",([^\n]+)/gi)) {
  print prefix + 'if newstr==' + find[1].replace("\W", '') + ':'
  print '  return eval(' + find[2] + ')'
  prefix = 'el'
}

\W(大写!W)捕获所有不是 a-z、0-9 或 _ 的内容并将其替换为空字符串。

可视化较长的正则表达式,为您提供所需的 2 个独立部分:

Debuggex Demo

【讨论】:

    猜你喜欢
    • 2012-11-24
    • 1970-01-01
    • 1970-01-01
    • 2021-07-13
    • 1970-01-01
    • 2015-01-29
    • 1970-01-01
    • 2014-06-01
    • 1970-01-01
    相关资源
    最近更新 更多