2017-10-16 82 views
0

我正在尝试将源代码片段从脚本和其他相关信息写入csv文件,其中每个单元格将包含一条信息。python csv写入器将源代码片段写入单个单元格

希望的输出会是这样:

function name, number of lines, source code 
helloWorld, 3, { 
       printf("hello, world\n"); 
       } 
fooBar, 5, { 
      const char *foo = "Hello"; 
      const char *bar = "World!"; 
      fprintf(stdout, "%s %s\n", foo, bar); 
      return 0; 
      } 

,其中每个源代码段应是在一个单一的细胞,同时保留的码结构。

下面是代码:

with open('functionInformation.csv', 'wb') as csvOut: 
    csvwriter = csv.writer(csvOut, delimiter = ',') 
    csvwriter.writerow(['function name', 'number of lines', 'source code']) 
    for functionObject in functionObjectRepository: 
     csvwriter.writerow([functionObject.funcName, functionObject.numLines, functionObject.sourceCode]) 

其中函数对象是一个像的功能(了funcName)的名称属性的对象,(源代码)的代码行(numLines),以及实际的源代码的数。

输出,现在我得到的样子:

helloWorld, 3, { 
printf("hellp, world\n"); 
} 
fooBar, .... 

回答

1

根据this site

  1. 换行代表一个回车/换行,
  2. 字符串应包在引号中。

然后,它显示了例子:

#!/usr/bin/env python2.7 

import csv 

multiline_string = "this\nis\nsome\ntext"    # assign string 
multiline_string = multiline_string.replace('\n','\r\n') # convert newlines to newlines+carriage return 

with open('xyz.csv', 'wb') as outfile: 
     w = csv.writer(outfile)       # assign csv writer method 
     w.writerow(['sometext',multiline_string])   # append/write row to file 

但是,更换所有\n\r\n在你的代码也将改变代码本身的人。所以,也许你必须找到一些更好的方式来做这个改变。

+0

感谢这个例子!它的工作原理 – user32147

+0

你有没有注意过'fprintf'(stdout,“%s%s \ n”,foo,bar);',看内部的'\ n'是否也被替换了?由于每行代码以分号分隔,因此可能应该用'; \ r \ n'替换'; \ n'。 – berna1111