我有一个包含数千个句子行的中文txt文件,如下所示
............
我想将每两条相邻的行组合成一行,它应该转换为:
如何使用Python完成组合?
答案 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
为每一行执行给定的脚本时,换行符不包含在模式空间中(包含它将是多余的)。所以执行的序列是:
N
:将下一行追加到模式空间,既然我们在模式空间中有两行,它们必须用换行符分隔,所以我们在模式中间有一个换行符空间s/\n/ /
用空格替换换行符答案 1 :(得分:0)
然后你可以使用列表理解,如下所示:
b
注意,这意味着您必须拥有相同数量的行。所以如果[ 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。
代码只在内存中保留两行,因此它可以支持任意大文件。