[英]writing for loop variables to a single line of a file in python
假設我有一個列表X,其內容位於文件的一行中,即
for var in X:
if var <some conditions>:
outfile.write(" "+var)
我該怎么做,以使循環的每次迭代都不會寫入輸出文件中的新行,即
var1 var2 var3
而不是
var1
var2
var3
在文件中。 我知道可以使用print語句作為print x來完成此操作,但找不到與write等效的語句。
除非您的變量已經包含尾隨的換行符,否則文件中不會包含多行。
但是,您可以使用rstrip()
來簡單地刪除任何結尾的空格:
outfile.write(" " + var.rstrip())
更好的解決方案是創建一個包含項目的列表,並對其進行join()
。 或者只是將生成器表達式傳遞給join()
調用:
outfile.write(' '.join(var for var in x if condition(var)))
更明確的版本是這樣的:
results = []
for var in x:
if condition(var):
results.append(var)
outfile.write(' '.join(results))
作為ThiefMaster出色答案的替代方案,Python3中的print
功能允許您指定文件對象和結尾。
vars = ['one','two','three']
with open("path/to/outfile","w") as outfile:
for i, entry in enumerate(vars):
if not condition(var):
continue
if i == len(vars):
_end = ''
else:
_end = ' '
print(entry, end=_end, file=outfile)
但是,使用str.join
可能更容易。
vars = ['one','two','three']
with open("path/to/outfile","w") as outfile:
output_string = ' '.join(map(str.strip, [var for var in vars if condition(var)]))
print(output_string, end='', file=outfile)
# or outfile.write(output_string)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.