[英]Python while, continue loops
我的輸入文件是每行一句話。 假設它看起來像:
A
B
C
D
E
F
所需的輸出是:
::NewPage::
A
B
::NewPage::
C
D
::NewPage::
E
F
我知道我應該使用while循環,但不確定如何?
您這里不需要while
循環-查看itertools
中的grouper
食譜 。
def grouper(n, iterable, fillvalue=None):
"Collect data into fixed-length chunks or blocks"
# grouper(3, 'ABCDEFG', 'x') --> ABC DEF Gxx"
args = [iter(iterable)] * n
return zip_longest(*args, fillvalue=fillvalue)
請注意,如果您使用的是2.x 版本,則需要稍有不同的版本 。
例如:
items = ["A", "B", "C", "D", "E"]
for page in grouper(2, items):
print("::NewPage::")
for item in page:
if item is not None:
print(item)
產生:
::NewPage::
A
B
::NewPage::
C
D
::NewPage::
E
如果需要“ None
值,則可以使用哨兵對象。
我不知道這是否會打擾PEP-8的眾神。
但是語言不可知的替代方案(更普通的讀者可以理解)可能是:
items = ["A", "B", "C", "D", "E"]
out = []
for i,item in enumerate(items):
if i%2 == 0:
out.append("::New Page::")
out.append(item)
編輯:當您在寫完答案之前不檢查是否有新答案時,會發生這種情況。 我的答案基本上與cdarke的相同。
像這樣? 在Python 3.3上測試:
i = 0
page_size = 2
lines = []
for line in open("try.txt"):
lines.append(line)
i += 1
if i % page_size == 0:
print("::NewPage::")
print("".join(lines),end="")
i = 0
lines = []
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.