【问题标题】:How to remove line breaks or merge lines in a txt file with python?如何使用python删除txt文件中的换行符或合并行?
【发布时间】:2019-03-26 10:59:38
【问题描述】:

我有一个包含“连续行块”的 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,

【问题讨论】:

  • 不清楚输入是什么,也不清楚想要的输出是什么。
  • with open(file) as f:..lines = f.read().strip().split() ?
  • 请分享示例输入文件的屏幕截图以及您尝试实现它的代码。
  • 我在下面添加了一个屏幕截图,说明该列表目前的样子。我还试图描述我想从那里去哪里。感谢您的帮助

标签: python python-3.x


【解决方案1】:

试试

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()]

【讨论】:

    【解决方案2】:

    你可以扩展秃头的回答:

    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) 来获得单行输出。

    【讨论】:

    • with open('WS16_17/Bachelor-Studiengänge - Hauptfach_sorted.txt','r', encoding='utf-8', errors='replace') as f: # lines should hold the data with no new lines lines = [l.strip() for l in f.readlines()] f.close()
    • 这段代码(感谢@balderman)创建了一个名为lines的列表,如下所示:[i.imgur.com/Au41MY3.png]连续的行属于同一个观察(讲座标题、学分、类型、学期、讲师等)。 )。我需要的是以某种方式将其放入数据集中,最好是在 Stata 中。请注意,“变量”(标题、学分、类型等)的顺序始终相同,但并非每个块/观察(通过空列表元素分隔)都具有相同的长度。这就是为什么我不确定字典是否有效,因为它需要确定一个块有多少行?
    • 克里斯蒂安,我明白你的意思。我可以看到您的文件不符合结构。我还看到每个块都以关键字“VName”开头。如果整个文件都遵循这种模式,那么您可以将每个块分开。
    猜你喜欢
    • 2014-10-30
    • 2012-04-13
    • 1970-01-01
    • 2020-10-06
    • 2016-06-22
    • 2018-03-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多