fi中Python字符串替换

2024-04-27 00:14:29 发布

您现在位置:Python中文网/ 问答频道 /正文

我当前正在尝试生成一组模型,这些模型在文本文件中按以下语法指定:

pn [BM1_100_Token]

constants:

places:
    P0 = 1;
    P1 = 0;
    [...]
    P14 = 2;
    P15 = 0;
    P16 = 0;
    P17 = 0;
    [...]

transitions:
    T0 :  : [P0 - 1] & [P1 + 1];
    T1 :  : [P1 - 1] & [P2 + 1] & [P3 + 1];
[...]

我想修改的Px=2可能为零: 我想将所有出现的内容都更改为值Y,然后用新名称BMz\u Y保存文件_令牌.txt你知道吗

我想通过Python和正则表达式来实现这一点相当简单,但我现在有点困了,因为这是我第一次真正体验Python。你知道吗

我的正则表达式是这样的:

regex = re.compile(" = 2;")

我还可以从目录中获取文件列表并拆分文件名,这样我就可以得到几个不同的部分:

fileParts[1] = BMx
fileParts[2] = Y
fileParts[3] = Token.txt

所以我现在要做的是:

  1. 打开文件列表中的第一个文件
  2. 将所有出现的“=2;”替换为“=currentValue;”
  3. 保存到BMx\u currentValue_令牌.txt你知道吗
  4. 电流值++
  5. 如果currentValue<;=999,转到步骤2
  6. 对fileList中的下一个文件重复步骤1
  7. 如果文件列表.next==null->;我们完成了

因此,结果将是一个目录中每个文件的999个变体。 有没有想过用Python怎么做?你知道吗


Tags: 文件模型目录txttoken列表语法步骤
1条回答
网友
1楼 · 发布于 2024-04-27 00:14:29

对于1,请解释什么是文件列表。我猜这是一个文件名(?)的列表。你知道吗

对于no 2,不需要正则表达式。只需使用字符串方法.replace(' = 2;',' = currentValue;')。你知道吗

对于数字4、5、6和7,可以使用带有rangefor循环。记住在python中range(1000)将产生从0到999的整数。你知道吗

所以从你写的(我假设Python2):

currentValue = 0
inpFileName = fileList[0]  # ?
for currentValue in range(1000):
  inpFile = open( inpFileName, 'r' )
  outFile = open( 'BMx_%d_Token.txt' % currentValue, 'w' )
  for inpLine in inpFile:
    outLine = inpLine.replace( ' = 2;', ' = %d;' % currentValue )
    outFile.write( outLine )
  inpFile.close()
  outFile.close()

我不知道这是否正是你想要的,但它应该给你一个好的开始。你知道吗

相关问题 更多 >