在word文件中添加一个额外的列

时间:2017-05-15 15:35:13

标签: python

我有一个看起来像这样的文本文件:

1 0.0
2 0.2
3 0.4

我现在要做的是检查某些值是否介于阈值之间,然后向该行添加内容。因此,如果值为0.1,从而介于0和0.2之间,则应添加“1”,输出应为:

1 0.0 1
2 0.2
3 0.4

我试过了:

#open doc
doc = "sample_name.txt"
f = open(doc, "r")
lines = l.readlines()

count = 1 
for line in lines:

 elements = line.split(" ")
 start_time = elements[1]

 #get element from next line
 next_line = lines[count]
 elements_new_line = next_line.split(" ")
 end_time = element_new_line[1]

 if i >= end_time and i <= start_next_time:
     #add a one the file
 #increase counter
 count = count + 1

关于如何编写1到.txt文件的任何想法

2 个答案:

答案 0 :(得分:0)

严格地说,将值添加到文本文件中的行的末尾通常并不容易。这是因为即使在一行中添加一个字符也会将文件中的所有其他字符“推”到右侧。通常,首选的开局是读取输入文件的行,根据需要向这些行添加或修改字符,并将它们写入输出文件。在您的情况下,然后可以丢弃输入文件并将输出文件放在其位置。

在打开输入和输出文件时,我编写了以下代码来使用with,以便在退出with的缩进时自动关闭它们。现在,这是处理文件的首选方式。

我的假设是每行只有两个值为firstsecond。我使用strip删除每行末尾的换行符或回车符。我使用if来测试输入值。您将注意到,必须从读取的字符转换为浮点数,以便与浮点值进行比较。

退出with后,商店中有两个文件。我丢弃原件并将新版本重命名为原件名称。

with open('sample_name.txt') as sample, open('temp.txt', 'w') as temp:
    for line in sample:
        first, second = line.strip().split()
        if 0 <= float(second) < 0.2:
            temp.write('%s %s 1\n' % (first, second))
        else:
            temp.write('%s %s\n' % (first, second))

from os import remove, rename

remove('sample_name.txt')
rename('temp.txt', 'sample_name.txt')

答案 1 :(得分:0)

写一个修改过的文件,然后覆盖原文。

import os
fname = "sample_name.txt"
temp_fname = fname + ".tmp"
with open(fname, 'r') as fin, open(temp_fname, 'w') as fout:
    for line in fin:
        parts = line.split()
        if 0 < float(parts[1]) < 0.2:
            parts.append("1")
            fout.write(' '.join(parts) + '\n')
        else:
            fout.write(line)
os.remove(fname)
os.rename(temp_fname, fname)

如果您想要始终修改该行(在条件通过时添加'1'而在条件通过时添加'0')将for循环更改为:

    for line in fin:
        parts = line.split()
        parts.append("1" if 0 < int(parts[1]) < 0.2 else "0")
        fout.write(' '.join(parts) + '\n')