使用Python删除多余的空行
我想要记事本++的精彩功能删除Python中多余的空行 如果我有这样的文件使用Python删除多余的空行,python,Python,我想要记事本++的精彩功能删除Python中多余的空行 如果我有这样的文件 A B C D 我想要 A B C D 什么是蟒蛇式的方法 这是我试过的 A=['a','\n','\n','\n','a','b','\n','\n','C','\n','\n','\n','\n','\n','\n','D'] B=[] count=0 for l in range(0,len(A)): if A[l]=='\n': count=count+1 els
A
B
C
D
我想要
A
B
C
D
什么是蟒蛇式的方法
这是我试过的
A=['a','\n','\n','\n','a','b','\n','\n','C','\n','\n','\n','\n','\n','\n','D']
B=[]
count=0
for l in range(0,len(A)):
if A[l]=='\n':
count=count+1
else:
count=0
if count>1:
if A[l+1]=='\n':
continue
else:
B.append('\n')
else:
if A[l]!='\n':
B.append(A[l])
print B
确保不超过\n\n,例如: 并且,对大文件使用itertools.groupby:
from itertools import groupby
with open('your_file') as fin:
for has_value, lines in groupby(fin, lambda L: bool(L.strip())):
if not has_value:
print
continue
for line in lines:
print line,
确保不超过\n\n,例如: 并且,对大文件使用itertools.groupby:
from itertools import groupby
with open('your_file') as fin:
for has_value, lines in groupby(fin, lambda L: bool(L.strip())):
if not has_value:
print
continue
for line in lines:
print line,
这是一条单行线:
In [35]: A=['a','\n','\n','\n','a','b','\n','\n','C','\n','\n','\n','\n','\n','\n','D']
In [36]: B = [A[0]] + [A[i] for i in range(1, len(A)) if A[i] != '\n' or A[i-1] != '\n']
In [37]: B
Out[37]: ['a', '\n', 'a', 'b', '\n', 'C', '\n', 'D']
它基本上省略了跟在其他换行符后面的换行符。这里有一行:
In [35]: A=['a','\n','\n','\n','a','b','\n','\n','C','\n','\n','\n','\n','\n','\n','D']
In [36]: B = [A[0]] + [A[i] for i in range(1, len(A)) if A[i] != '\n' or A[i-1] != '\n']
In [37]: B
Out[37]: ['a', '\n', 'a', 'b', '\n', 'C', '\n', 'D']
它基本上省略了跟在其他换行符后面的换行符。这就是你要找的吗
>>> def delete_surplus_blank_lines(text):
while '\n\n\n' in text:
text = text.replace('\n\n\n', '\n\n')
return text
>>> text = 'a\n\n\nab\n\nC\n\n\n\n\n\nD'
>>> print(text)
a
ab
C
D
>>> print(delete_surplus_blank_lines(text))
a
ab
C
D
>>>
基于NPE理念的更有效实施将是:
def delete_surplus_blank_lines(text):
return text[:2] + ''.join(text[index] for index in range(2, len(text))
if text[index-2:index+1] != '\n\n\n')
使用lambda创建该函数的一行代码相当容易:
这就是你要找的吗
>>> def delete_surplus_blank_lines(text):
while '\n\n\n' in text:
text = text.replace('\n\n\n', '\n\n')
return text
>>> text = 'a\n\n\nab\n\nC\n\n\n\n\n\nD'
>>> print(text)
a
ab
C
D
>>> print(delete_surplus_blank_lines(text))
a
ab
C
D
>>>
基于NPE理念的更有效实施将是:
def delete_surplus_blank_lines(text):
return text[:2] + ''.join(text[index] for index in range(2, len(text))
if text[index-2:index+1] != '\n\n\n')
使用lambda创建该函数的一行代码相当容易:
您有一个文件,因此让我们定义一个名为clean_up的函数来清理您提供的文件:
def clean_up(file_name,blanks=1):
with open(file_name,'r+') as f:
blank = 0
for line in f:
if blank < blanks:
if line == "\n":
blank += 1
f.write(line)
else:
blank = 0
if line != "\n":
f.write(line)
现在,这将遍历您的文件,并确保一行中的空行数不超过空格 您有一个文件,因此让我们定义一个名为clean_up的函数来清理您提供的文件:
def clean_up(file_name,blanks=1):
with open(file_name,'r+') as f:
blank = 0
for line in f:
if blank < blanks:
if line == "\n":
blank += 1
f.write(line)
else:
blank = 0
if line != "\n":
f.write(line)
现在,这将遍历您的文件,并确保一行中的空行数不超过空格 你尝试过什么吗?@RyanSaxe补充了我的尝试,考虑到新线是随机的,有什么更容易做到的方法吗?你尝试过什么吗?@RyanSaxe补充了我的尝试,考虑到新行是随机的,有什么更容易做到这一点的方法呢?这是一个文件…你的字符串不应该更像文件名吗?阅读?@JonClements谢谢你的回答,但在我的情况下,新行可能是随机的,反正可以包含在你的解决方案中。@Rajasankar你说随机是什么意思?我有一种感觉,这已经达到了您的期望……这是一个文件……您的字符串不应该更像文件名吗?阅读?@JonClements谢谢您的回答,但在我的情况下,新行可能是随机的,无论如何,可以包含在您的解决方案中。@Rajasankar随机是什么意思?我感觉这已经达到了你的期望。。。