2015-03-25 59 views
0

我正在創建一個腳本,爲文件中的每個單詞添加一個隨機整數。所有單詞都是整數。到目前爲止我的腳本添加隨機整數,如果輸入只有一列。爲文件中的每個單詞添加隨機整數

import subprocess 
import fileinput 
import sys 
from random import randint 
#print randint(0,9) 


for line in fileinput.input('mytext.txt', inplace=True): 
    if int(line) < 999: 
     line = int(line) + randint(25,101) 
    else: 
     line = int(line) + randint(50,500) 

    line = str(line) + '\n' 
    #print line 
    sys.stdout.write(line) 

這個工作,如果文件中包含以下文本(一列)

1 
2 
3 
4 

輸出:

94 
2300 
1402 
585 

但是,如果文件中包含不工作:(兩列或多列)

1 2 
2 5 
3 2 
3 4 

如何修改它,如此我可以給我儘可能多的列。

+2

你試過了:'columns = line.split()'? – 2015-03-25 12:36:33

回答

0

使用str.split分割線,並得到了號碼,那麼你的隨機號碼添加到號的整個列表:

for line in fileinput.input('mytext.txt', inplace=True): 
    # get all numbers from row 
    numbers = [int(x) for x in line.strip().split()] 
    if numbers[0] < 999: 
     numbers = [x + randint(25,101) for x in numbers] 
    else: 
     numbers = [x + randint(50,500) for x in numbers] 
    # re-map modified numbers to a line of text 
    sys.stdout.write(' '.join([str(x) for x in numbers]) + '\n') 

如果你更舒服,您可以使用map代替list comprehension的它。

如果您有類似csv格式的更復雜的內容,請使用csv module

相關問題