如何将中文txt文件中的每两条相邻行组合成一行

时间:2016-06-06 14:40:55

标签: python

我有一个包含数千个句子行的中文txt文件,如下所示

  1. 第1行
  2. 第2行
  3. 第3行
  4. 第4行
  5. ............

    我想将每两条相邻的行组合成一行,它应该转换为:

    1. 第1行+空格+第2行
    2. 第3行+空格+第4行
    3. 第5行+空格+第6行 ............
    4. 如何使用Python完成组合?

4 个答案:

答案 0 :(得分:1)

你不需要Python,sed就足够了:

$ seq 15 > lines
$ cat lines
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
$ sed 'N;s/\n/ /g' lines
1 2
3 4
5 6
7 8
9 10
11 12
13 14
15

据男人说:

  

n N读取/附加下一行输入到模式空间。

  

S /的regexp /更换/

     

尝试将regexp与模式空间匹配。如果成功,请替换与替换匹配的部分。替换可能包含特殊字符&引用模式空间中匹配的那部分,特殊转义\ 1到\ 9引用正则表达式中相应的匹配子表达式。

并且,当sed为每一行执行给定的脚本时,换行符不包含在模式空间中(包含它将是多余的)。所以执行的序列是:

  • sed在模式空间中加载一行
  • N:将下一行追加到模式空间,既然我们在模式空间中有两行,它们必须用换行符分隔,所以我们在模式中间有一个换行符空间
  • s/\n/ /用空格替换换行符
  • sed现在打印该行,因为此行没有其他事项
  • 然后从下一行开始

答案 1 :(得分:0)

  1. 您将阅读该文件并获取行列表(即字符串列表)
  2. 然后你可以使用列表理解,如下所示:

    b

  3. 注意,这意味着您必须拥有相同数量的行。所以如果[ l1 + ' ' + l2 for l1,l2 in zip(lines[::2], lines[1::2]) ]然后使用len(lines)%2==1打印/使用最后一行

答案 2 :(得分:0)

您应该按如下方式迭代文件:

with open('./chinese.txt') as my_file:
    for line in my_file:
        try:
            print '{} {}'.format(line.strip(), my_file.next())
        except StopIteration:  # Manage case: number of lines is an odd number
            print line

答案 3 :(得分:0)

文件是Python中的行的迭代器。你可以use the itertools' grouper() recipe, to group the lines into pairs

print

{{1}}语句末尾的逗号为the file.softspace hack, to avoid duplicating newlines

代码只在内存中保留两行,因此它可以支持任意大文件。