我正在创建一个脚本,为文件中的每个单词添加一个随机整数。所有单词都是整数。到目前为止,如果输入只有一列,我的脚本会添加随机整数。
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
如何修改它,以便我可以根据需要提供尽可能多的列。
答案 0 :(得分: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。