【问题标题】:Difficulties adding a new blank line every 10 lines of text in Python在 Python 中每 10 行文本添加一个新的空行很困难
【发布时间】:2022-11-17 08:41:59
【问题描述】:

我正在编写一个 python 脚本,它将格式化我从互联网输入的学校书籍。

目前第一节和第三节都可以使用。本书可以去掉所有空行,输出为纯文本文件。

我遇到的问题是第二部分。删除所有空行后,每 10 行应该有一个新的空行重新插入到文本文件中。

这是我到目前为止的代码:

import sys
#setting finalBook as a string
finalBook = ""
i = int(0)

#section one
#removing all original blank lines from book
with open("dangerousGame.txt") as f:
    for line in f:
        if not line.isspace():
            finalBook = finalBook + line

#section two
#add in a blank line every 10 lines
for i in finalBook:
    if i % 10 == 0 and i != 0: 
        finalBook = finalBook + "\n"

#section three
#output in a plain text             
with open("test.txt", "w") as x:
        x.write(finalBook)

到目前为止,我已经尝试搜索 '\n' 但似乎 Python 认为每一行都有一个,但事实并非如此。我也尝试过将书分成一个列表并以这种方式格式化,但这也没有用。

任何帮助表示赞赏。

【问题讨论】:

  • 您是希望每 10 行文本后有一个空行,还是每 9 行文本后有一个空行(即第 10 行为空)?

标签: python python-3.x


【解决方案1】:

代替:

for i in finalBook:
    if i % 10 == 0 and i != 0: 
        finalBook = finalBook + "
"

你会想要这样的东西:

n = 10
finalBook = [
    line for block in (
        finalBook[i:i + n] + ['
'] for i in range(0, len(finalBook), n)
    ) for line in block
]

例如:

finalBook = [str(i) + '
' for i in range(10)]

n = 3
finalBook = [
    line for block in (
        finalBook[i:i + n] + ['
'] for i in range(0, len(finalBook), n)
    ) for line in block
]

print(finalBook)

输出:

['0
', '1
', '2
', '
', '3
', '4
', '5
', '
', '6
', '7
', '8
', '
', '9
', '
']

顺便说一句,为了使您的代码更符合 Python 风格,请考虑将 finalBook 重命名为 final_book,因为“蛇形”是 Python 推荐的命名约定。

【讨论】:

    猜你喜欢
    • 2022-07-01
    • 2021-01-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-05
    • 2013-06-26
    • 2012-09-07
    相关资源
    最近更新 更多