2017-07-30 25 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)