2017-08-17 13 views
-1

"pdf"ファイルの特定のページからデータを読み込み、Pythonを使用してCSVファイルに書き込むコードを記述しました。それは部分的にしか仕事ではありません。ただし、csvファイルにデータを書き込む場合、通常のパターンではなく、1行に書き込む。目的に合うようにスクリプトを変更するにはどうすればよいですか?前もって感謝します。ここでデータは一部のCSVファイルの1行に書き込まれています

は、私がこれまで試したものです:PDFで

import csv 
from PyPDF2 import PdfFileReader 

outfile = open("conversion.csv",'w', newline='') 
writer = csv.writer(outfile) 

infile = open('some.pdf', 'rb') 
reader = PdfFileReader(infile) 
contents = reader.getPage(7).extractText().split('\n') 
writer.writerow(contents) 

print(contents) 
infile.close() 

データをこれらのようなものです:

Creating a PivotTable Report 162 PivotCaches 165 PivotTables Collection 165 PivotFields 166 CalculatedFields 170 

Creating a PivotTable Report 162 
PivotCaches 165 
PivotTables Collection 165 
PivotFields 166 
CalculatedFields 170 

は、私のようなCSV出力でデータを取得しています

+0

これを実行したが、依然として1行で書かれている。 – SIM

+2

[writerow ** s **](https://docs.python.org/3/library/csv.html#csv.csvwriter.writerows)?? – wwii

+0

また、 'outfile'を閉じるべきです、あるいは不完全なファイルを得るかもしれません。または、[コンテキストマネージャ](http://eigenhombre.com/2013/04/20/introduction-to-context-managers) –

答えて

0

この特定のコードの場合:

内容はアイテム一覧です[ライン]

contents = reader.getPage(7).extractText().split('\n') 
for each in contents: 
    writer.writerow(each) 

print(contents) 

これを試してみてください。

+0

あなたのコードを実行すると、私はコンソールに入っているエラーです:writer.writerow(content + "\ n") TypeError:リスト( "str"ではなく)を連結してリストにすることができます – SIM

+0

これがどうなるか教えてください – vintol

0

あなたは

>>> print(s) 
Line 1 
Line 2 
Line 3 
Line 4 

か、その文字列の表現を持っていると仮定します。

>>> s 
'Line 1\nLine 2\nLine 3\nLine 4' 

あなたは\nによって分割した場合、終了行がされなくなりました:

>>> s.split('\n') 
['Line 1', 'Line 2', 'Line 3', 'Line 4'] 

ので、各行をファイルに順番に印刷すると、次の行が表示されます。

>>> with open('/tmp/file', 'w') as f: 
... for line in s.split('\n'): 
...  f.write(line) 
... 
# will write 'Line 1Line 2Line 3Line 4' 

だから、あなたがファイルへの書き込み時にバックラインの終末を追加する必要があります。

writer.writerow('\n'.join(contents)) # assuming that is a list of strings 

あなたはまた、コンテキストマネージャを使用します(私は上記の使用with)またはファイルまたはあなたを閉じる必要がありますどちらか部分的な書き込みしか得られない。 vintolは私が探していた出力は、私はつもり答えとしての彼の解決策を受け入れてるものに非常に近かったとして

import csv 
from PyPDF2 import PdfFileReader 

outfile = open("conversion.csv",'w',newline='') 
writer = csv.writer(outfile) 

infile = open('some.pdf', 'rb') 
reader = PdfFileReader(infile) 
contents = reader.getPage(15).extractText().split('\n') 
for each in contents: 
    writer.writerow(each.split('\n')) 

infile.close() 
outfile.close() 

0

これは私が後だったソリューションです。

関連する問題