Python:在每行的文本文件中替换数组的索引元素

时间:2017-10-26 11:56:45

标签: python

我有一个类似于:

的文本文件
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个不同的行(每行是一个单独的列表吗?)

任何帮助都会非常受欢迎。

3 个答案:

答案 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

有很多替代方法可以解决这个问题。我展示了最琐碎的一个。