简体   繁体   中英

csv.writer - How to dynamically write columns in writerow(n1,n2,n3, …nth)?

I am trying to write to a CSV file. I want to write three variables on a row and then write a variable number of columns.

So for example my script will do a bunch of calculations and come up with the idea that I need 12 columns. So the 'variable' needs to contain column 0 thru 11.

How to do this dynamically?

numberofcolumns = 12
with open(f+".csv",'wb') as output_csvfile:
    filewriter = csv.writer(output_csvfile)
    filewriter.writerow([constant1,constant2,constant3,variable[0],...,variable[n]])

What I want is to do filewriter.writerow([constant1, constant2, constant3, variable[0], variable[1],....,variable[11]]) However variable[11] may not be 11 it may be 8 or 10 or whatever. the length is dynamic. How can I make it so that this code will be able to output to Nth column if the function writerow() isn't defined to use *args?

What martineau pointed out in a comment is correct. writerow accepts a list, or sequence, of any length.

So you could do something like the following:

variable = range(12)

# Change your writerow line to be something like this: 
filewriter.writerow([constant1,constant2,constant3] + variable)

range in this case is an example of creating a list of however-many items. range is documented here .

Notice that the above example uses + to put two sequences/lists together.

Here's an example of that from the command line/ repl :

>>> variable = range(12)
>>> variable
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]
>>> ["x", "y", "z"] + variable
['x', 'y', 'z', 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM