title: Writing csv with quotes around strings (Python)
body: <p>I have written the following code to take a large csv file, and split it into multiple csv files based on a particular word in a column. The original csv file has some fields that are strings, and they have quotes around them.</p>
  <p>For example:</p>
  <pre><code>Field1,Field2,Field3,Field4
  1,2,&quot;red&quot;,3
  1,4,&quot;red&quot;,4
  3,4,&quot;blue&quot;,4
  </code></pre>
  <p>etc.</p>
  <p>My code splits the file into separate csvs based on Field4.</p>
  <p>My output looks like this:</p>
  <pre><code>3.csv
  Field1,Field2,Field3,Field4
  1,2,red,3
  
  4.csv
  Field1,Field2,Field3,Field4
  1,4,red,4
  3,4,blue,4
  </code></pre>
  <p>I want my output to maintain quotes around the strings in field 3. The files are fed into a piece of software that only works if strings have quotes around them, which is quite annoying.</p>
  <p>My current code looks like this:</p>
  <pre><code>import csv
  
  #Creates empty set - this will be used to store the values that have already been used
  newfilelist = set()
  
  #Opens the large csv file in &quot;read&quot; mode
  with open('File.csv', 'r') as csvfile:
      
      #Read the first row of the large file and store the whole row as a string (headerstring)
      read_rows = csv.reader(csvfile)
      headerrow = next(read_rows)
      headerstring=','.join(headerrow) 
      for row in read_rows:
          
          #Store the whole row as a string (rowstring)
          rowstring=','.join(row)
          
          #Takes Field 4
          newfilename = (row[3])
          
          
          #This basically makes sure it is not looking at the header row.
          if newfilename != &quot;field4&quot;:
          
              
              #If the newfilename is not in the newfilename set, add it to the list and create new csv file with header row.
              if newfilename not in newfilelist:    
                  newfilelist.add(newfilename)
                  with open('//output/' +str(newfilename)+'.csv','a') as f:
                      f.write(headerstring)
                      f.write(&quot;\n&quot;)
                      f.close()    
              #If the newfilename is in the newfilelist set, append the current row to the existing csv file.     
              else:
                  with open('//output/' +str(newfilename)+'.csv','a') as f:
                      f.write(rowstring)
                      f.write(&quot;\n&quot;)
                      f.close()
   
  </code></pre>
  <p>Can anybody advise me how to get the quotes around the strings? Unfortunately the software that uses my files requires them to be in this format!</p>