我正在寻找一种很好的pythonic方式来读取文件,并加入任何上述逻辑延续的行,如行连续符所示。例如。
Here is a normal line.
This line continues over \
two lines.
This line continues over\
three \
lines.
我在这里找到了一个解决方案:http://code.activestate.com/recipes/66064-reading-lines-with-continuation-characters,但它看起来很笨拙。 Daniel Wang在使用生成器的评论中提供了一个很好的解决方案:
def loglines(rawdata):
lines = []
for i in rawdata.splitlines():
lines.append(i)
if not i.endswith("\\"):
yield "".join(lines)
lines = []
if len(lines)>0: yield "".join(lines)
这样可以正常工作,前提是您可以立即读取整个文件。我想知道是否有任何内置函数可以处理这个,或者是否有人有任何其他建议。
答案 0 :(得分:11)
with open("data.txt") as fin:
for line in fin:
line = line.rstrip('\n')
while line.endswith('\\'):
line = line[:-1] + next(fin).rstrip('\n')
print line
...
如果您愿意,也可以将其拉出到发电机中
def continuation_lines(fin):
for line in fin:
line = line.rstrip('\n')
while line.endswith('\\'):
line = line[:-1] + next(fin).rstrip('\n')
yield line
with open("long.txt") as fin:
for line in continuation_lines(fin):
...