gpt4 book ai didi

python - 将文件中以 '\' 结尾的行连接在一起

转载 作者:行者123 更新时间:2023-12-01 08:48:46 25 4
gpt4 key购买 nike

我对Python真的很陌生,出于某种原因,这让我困惑了一段时间,所以我想我应该寻求帮助。

我正在编写一个 python 脚本,它允许我读取我的文件,但如果行末尾有一个“\”,它将加入其后的行。

因此,如果各行如下所示:

: Student 1 
: Student 2 \
Student 3

任何前面没有冒号的行,如果前一行有“\”,我想将它们组合起来,如下所示:

: Student 2 Student 3

这是我尝试过的:

s = ""    
if line.endswith('\\'):
s.join(line) ## line being the line read from the file

任何正确方向的帮助都会很棒

最佳答案

s.join 并没有像你想象的那样做。另请考虑文件中的行有一个换行符 ('\n'),因此 .endswith('\\') 不会因此而被捕获。

类似这样的东西(尽管方法有些不同)

output = ''
with open('/path/to/file.txt') as f:
for line in f:
if line.rstrip().endswith('\\'):
next_line = next(f)
line = line.rstrip()[:-1] + next_line
output += line

在上面,我们使用 line.rstrip() 来读取任何尾随空白(换行符),以便 .endswith 方法正确匹配。

如果一行以 \ 结尾,我们将继续使用内置函数 next 从文件生成器中提取下一行。

最后,我们合并该行和下一行,注意再次删除空格 (.rstrip()) 和 \ 字符 ([ :-1] 表示直到最后一个字符的所有字符)并获取新行并将其添加到输出中。

结果字符串像这样打印出来

: Student 1 
: Student 2 Student 3

关于s.join的注意事项...最好的解释可能是split相反,使用s 作为分隔符(或连接符)。

>>> "foo.bar.baz".split('.')
['foo', 'bar', 'baz']
>>> "|".join(['foo', 'bar', 'baz'])
'foo|bar|baz'

关于python - 将文件中以 '\' 结尾的行连接在一起,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53218185/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com