如何使用python删除换行符或合并txt文件中的行?

时间:2019-03-26 10:59:38

标签: python python-3.x

我有一个txt文件,其中包含“连续行的块”,每个块代表一个观察值,而每个块中的不同行代表相应观察值的一个变量的值。 我使用python到这里工作,我想将.txt文件读入Stata。因此,我想删除每个块中的换行符,以获取包含一个块/观测值(以逗号分隔)的所有信息的一行。但是,块/观测之间的换行符应继续存在。

对于所有块/观测,变量信息的顺序都是相同的顺序,但是每个观测的变量数量有所不同(在较低端)。 我的.txt(encoding ='ascii')文件如下所示:

obs1_var1,

obs1_var2,

obs1_var3,

obs2_var1,

obs2_var2,

obs2_var3,

obs2_var4,

obs3_var1,

obs3_var2,

obs3_var3,

2 个答案:

答案 0 :(得分:2)

尝试

with open('my_file.txt','r') as f:
    # lines should hold the data with no new lines
    lines = [l.strip() for l in f.readlines()]

答案 1 :(得分:0)

您可以扩展秃头人的答案:

with open('filename.txt','r') as f:
    lines = [l.strip() for l in f.readlines()]

这部分将创建整个文件的行列表。要在每个块中为变量创建一行,您可以使用字典在每个块中存储变量。 示例:

block_vars = {}
for line in lines:
    block_name = line[:4]
    if block_name not in block_vars.keys():
        block_vars[block_name] = []        #declaring as list store the lines in that block
    block_vars[block_name].append(line)    #append the line to list with same block name 

block_vars词典包含与特定块关联的行的列表。您可以使用'delimiter'.join(list_name)获得单行输出。