2017-07-30 28 views
-3

so ----- 2 ----- 3 ---- 5 ---- 2 ---- 3-- ---将变成----- 4 ----- 5 ---- 7 ---- 4 ---- 5 ----- 如果常数是2等等,对于每一个单独的行在文本文件中。任何简单的python代码建议为.txt中的每个单独的数字添加常量

这将涉及拆分识别字符串之间的数字并向其添加常数,例如--- 15 ---变成--- 17 ---不是--- 35 ---。

(基本上得到一个吉他标签,加上一个常数,以每音品号)

感谢。意识到这一点开始模糊和混乱,所以很抱歉。

可以说该文件是:

-2--3--5 --- 7--1/N-6 --- --- 3--5-1 5

和IM加入2,它应该成为:

-4--5--7 --- 9--3 /正8 --- --- 5--7-3 7

+1

如果该文件包含文本'--13 - ',如果输出是'--15 - '或'--35 - '? –

+1

你能准确的告诉我们你想要的吗 – 2017-07-30 21:10:09

+0

'29'或'9'怎么办?你能否澄清关于数字编辑规则的基本概念? – albert

回答

0

您好您可以使用它来介入文本文件中的每一行添加-

rt = '' 
f = open('a.txt','r') 
app = f.readlines() 
for i in app: 
    rt+=str(i)+'-' 
print " ".join(rt.split()) 
+0

这对于那些试图伤心的事情来说并不是太有帮助,结果并没有太大的帮助。 – user3486373

+0

好吧没问题 – 2017-07-30 21:21:02

+0

我测试了它,它只是用一些额外的破折号在 – user3486373

1

将文件名更改为相关内容,并且此代码将起作用。 new_string下的任何内容都需要根据需要进行更改,例如写入文件。

def addXToAllNum(int: delta, str: line): 
    values = [x for x in s.split('-') if x.isdigit()] 
    values = [str(int(x) + delta) for x in values] 
    return '--'.join(values) 

new_string = '' # change this section to save to new file 
for line in open('tabfile.txt', 'r'): 
    new_string += addXToAllNum(delta, line) + '\n' 


## general principle 
s = '-4--5--7---9--3 -8---5--7-3---7' 
addXToAllNum(2, s) #6--7--9--11--10--7--9--5--9 
+0

之间重新打印它定义的功能,它给出了不知道三角洲是什么的错误。 – user3486373

+0

尝试删除参数中的int:和str:。 – Rosh

+0

噢。即时通讯愚蠢哎呀,非常感谢这很好的作品。 – user3486373

1

无论分离字符的类型如何,这都会取得所有数字和增量shift

import re 

shift = 2 

numStr = "---1----9---15---" 
print("Input: " + numStr) 

resStr = "" 
m = re.search("[0-9]+", numStr) 
while (m): 
    resStr += numStr[:m.start(0)] 
    resStr += str(int(m.group(0)) + shift) 
    numStr = numStr[m.end(0):] 
    m = re.search("[0-9]+", numStr) 
resStr += numStr 

print("Result:" + resStr) 
0
import re 

c = 2 # in this example, the increment constant value is 2 

with open ('<your file path here>', 'r+') as file: 
    new_content = re.sub (r'\d+', lambda m : str (int (m.group (0)) + c), file.read()) 
    file.seek (0) 
    file.write (new_content)