我有一个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,
答案 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)获得单行输出。