我有下一个代码,该代码从多个文件中读取,解析获得的行并打印结果:
import os
import re
files=[]
pars=[]
for i in os.listdir('path_to_dir_with_files'):
files.append(i)
for f in files:
with open('path_to_dir_with_files'+str(f), 'r') as a:
pars.append(re.sub('someword=|\,.*|\#.*','',a.read()))
for k in pars:
print k
Run Code Online (Sandbox Code Playgroud)
但我有在输出多个新线路的问题:
test1
test2
Run Code Online (Sandbox Code Playgroud)
取而代之的是,我想获得下一个结果,在输出中没有空行:
test1
test2
Run Code Online (Sandbox Code Playgroud)
等等。
我尝试过使用regexp:
pars.append(re.sub('someword=|\,.*|\#.*|^\n$','',a.read()))
Run Code Online (Sandbox Code Playgroud)
但这是行不通的。我也尝试使用strip()和rstrip()包括replace。它也不起作用。
能否请你帮忙?
您可以使用第二个正则表达式将多个新行替换为一个新行,并使用strip摆脱最后一个新行。
import os
import re
files=[]
pars=[]
for i in os.listdir('path_to_dir_with_files'):
files.append(i)
for f in files:
with open('path_to_dir_with_files/'+str(f), 'r') as a:
word = re.sub(r'someword=|\,.*|\#.*','', a.read())
word = re.sub(r'\n+', '\n', word).strip()
pars.append(word)
for k in pars:
print k
Run Code Online (Sandbox Code Playgroud)