我有一个类似于:
的文本文件worker_batch_size
如果第一列中的值是> 50然后将剩余数据替换为0.
所以看起来应该是这样的:
20, 32, 28, 32
27, 38, 30, 30
82, 39, 28, 18
29, 38, 10, 20
90, 28, 29, 09
我真的被困在如何解决这个问题上。我搜索了这个网站,但只找到一个列表的示例,例如20, 32, 28, 32
27, 38, 30, 30
82, 0, 0, 0
29, 38, 10, 20
90, 0, 0, 0
。但我有5个不同的行(每行是一个单独的列表吗?)
任何帮助都会非常受欢迎。
答案 0 :(得分:0)
试试这个。如果列数发生变化,则需要更改CODE
fle =open("C:\Python27\projects\infile.txt")
lst=fle.readlines()
lst=[i.strip() for i in lst]
for i in lst:
j=i.split(',')
if int(j[0]) > 50:
for k in range(1,len(j)):
j[k]=0
print ','.join(str(l) for l in j)
fle.close()
答案 1 :(得分:0)
只需使用for循环,并为每一行执行一行。
以下是一个例子:
with open("example_file", "r") as f:
for line in f.readlines():
# do what you'd do with one line
new_line = [int(l) for l in line.split(',')]
if new_line[0] > 50:
new_line[1:] = [0]*(len(new_line)-1)
# process the line further ... save it to another file?
答案 2 :(得分:0)
您为单个列表找到的内容也可以用作多个列表。我们的data.txt
包含如下数据:
data.txt
20, 32, 28, 32
27, 38, 30, 30
82, 39, 28, 18
29, 38, 10, 20
90, 28, 29, 09
现在我们将阅读数据并根据需要处理这些数据。最后,我们将处理过的数据写入名为output_data.txt
的新文件中。该程序可以通过以下方式解决:
output_lines = []
with open("data.txt", "r") as input_file:
input_lines = input_file.readlines()
for line in input_lines:
line = line.strip()
if line!="":
ar = list(map(int, line.split(",")))
if ar[0] > 50:
ar[1:] = [0] * (len(ar)-1)
output_lines.append(", ".join([str(i) for i in ar]))
with open("output_data.txt", "w") as output_file:
for line in output_lines:
output_file.write(line+"\n")
output_data.txt
包含:
20, 32, 28, 32
27, 38, 30, 30
82, 0, 0, 0
29, 38, 10, 20
90, 0, 0, 0
有很多替代方法可以解决这个问题。我展示了最琐碎的一个。