python行继续符_在Python中读取带有行继续符的文件

I'm looking for a nice pythonic way of reading a file, and joining any lines which are logical continuations of the ones above, as indicated by a line continuation character. E.g.

Here is a normal line.

This line continues over \

two lines.

This line continues over\

three \

lines.

I've found one solution here: http://code.activestate.com/recipes/66064-reading-lines-with-continuation-characters, but it seems unwieldy. There is a nice solution from Daniel Wang in the comments using a generator:

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)

This works fine, provided you can read the whole file at once. I wondered if there are any built-in functions which handle this, or whether anyone has any other suggestions.

解决方案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

...

You can also pull this out into a generator if you wish

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):

...

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值