여기 내 코드, 나는 그것이 끔찍 확신하지만 모든 작품입니다 ... 감안할 때내가 이해하지 못하는 유니 코드 오류가 나는 데에만 문제가 마지막 줄에 함께 예상대로
import pyPdf
import os
import csv
class UnicodeWriter:
"""
A CSV writer which will write rows to CSV file "f",
which is encoded in the given encoding.
"""
def __init__(self, f, dialect=csv.excel, encoding="utf-8", **kwds):
# Redirect output to a queue
self.queue = cStringIO.StringIO()
self.writer = csv.writer(self.queue, dialect=dialect, **kwds)
self.stream = f
self.encoder = codecs.getincrementalencoder(encoding)()
def writerow(self, row):
self.writer.writerow([s.encode("utf-8") for s in row])
# Fetch UTF-8 output from the queue ...
data = self.queue.getvalue()
data = data.decode("utf-8")
# ... and reencode it into the target encoding
data = self.encoder.encode(data)
# write to the target stream
self.stream.write(data)
# empty queue
self.queue.truncate(0)
def writerows(self, rows):
for row in rows:
self.writerow(row)
PDFWriter = csv.writer(open('/home/nick/TAM_work/text/text.doc', 'a'), delimiter=' ', quotechar='|', quoting=csv.QUOTE_ALL)
def getPDFContent(path):
content = ""
# Load PDF into pyPDF
pdf = pyPdf.PdfFileReader(file(path, "rb"))
# Iterate pages
for i in range(0, pdf.getNumPages()):
# Extract text from page and add to content
content += pdf.getPage(i).extractText() + "\n"
# Collapse whitespace
content = " ".join(content.replace(u"\xa0", " ").strip().split())
return content
for word in os.listdir("/home/nick/TAM_work/TAM_pdfs"):
print getPDFContent("/home/nick/TAM_work/TAM_pdfs/" + word)
PDFWriter.writerow ([getPDFContent("/home/nick/TAM_work/TAM_pdfs/" + word)])
그것은이 돌 때까지
나는 그것을 실행하는 모든
Traceback (most recent call last):
File "Saving_fuction_added.py", line 52, in <module>
PDFWriter.writerow ([getPDFContent("/home/nick/TAM_work/TAM_pdfs/" + word)])
UnicodeEncodeError: 'ascii' codec can't encode character u'\u2122' in position 81: ordinal not in range(128)
내가 어떤 도움을 싶지만 ... 작동합니다. 고마워.
매트
비 ASCII 파일 이름이 있습니까? stacktrace가 너무 짧기 때문에 혼란 스럽습니다. writerow() 함수가 아닌 목록 이해 (TAM_pdfs + word) 내에 오류가 있음을 나타내는 것 같습니다. –
나는 처음에는 그렇게 생각했지만 이전 줄에서는 실패하지 않겠는가? – danben
를 .csv 내 .DOC를 변경하고 시도 추가 시도 : # 값이 있었다 : 다른 ("UTF-8", 값) 값 = 유니 코드 : UnicodeError 제외 X = 유니 코드 (값, "아스키") 을 유효한 ASCII 데이터 패스 하지만 그건 작동하지 않았다. 어쩌면 나는 완전히 잘못된 길을보고있을 것입니까? 텍스트를 CSV 파일로 추출하면됩니다. – Matt