簡體   English   中英

在python中將循環變量寫入文件的單行

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM