2017-10-16 15 views
0

スクリプトやその他の関連情報から、各セルに1つの情報が含まれているcsvファイルにソースコードスニペットを書き込もうとしています。python csv writerが単一のセルにソースコードスニペットを書き込む

コード構造を維持しながら、各ソースコード・スニペットは、単一のセルであるべき
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; 
      } 

所望の出力は次のようになるであろう。

以下

コードである:

関数オブジェクトは、関数(FUNCNAME)の名前のような属性を持つオブジェクト、コードの行(NUMLINES)の数、および実際のソースコード(ソースコード)である
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]) 

this siteによると

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

答えて

1

::私は今取得しています

出力は次のようになります

  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 

しかし、あなたのコード内で\r\nですべて\nを交換すると、コード自体にものを変更します。だから、おそらくあなたは変更を行うためのより良い方法を見つける必要があります。

+0

例のおかげで!それは動作します – user32147

+0

'fprintf(stdout、"%s%s \ n "、foo、bar);'の行が、 '\ n'内部も置き換えられているのを見ましたか?コードの各行がセミコロンで区切られているので、 '; \ n \ 'を'; \ r \ n'に置き換えてください。 – berna1111

関連する問題