2009-03-26 18 views
11

.doc, .ppt ve .xls dosyalarını python kullanarak linux üzerinde düz metne dönüştürmek için herhangi bir yöntem öneriliyor mu? Gerçekten herhangi bir dönüşüm metodu faydalı olacaktır. Açık Ofis'i kullanmayı daha önce inceledim ama Open Office'i kurmak zorunda kalmayacak bir çözüm istiyorum.python microsoft office doc'lerini linux üzerinde düz metne dönüştürür

+0

ben OP istediğin gibi açık ofis formatları kullanmamak için bir komut satırı çözümü – Tim

cevap

9

Komut satırı çözümü için giderdim (ve sonra araçları Python'dan çalıştırmak için Python subprocess module kullanın). msword (catdoc), Excel (xls2csv) ve ppt (catppt) için

Dönüştürücüler (kaynak şeklinde) bulunabilir burada: http://vitus.wagner.pp.ru/software/catdoc/.

Catppt'ın kullanışlılığı hakkında yorum yapamam ama catdoc ve xls2csv harika çalışıyor!

Ancak dağıtım dağıtım havuzlarınızı ilk kez aradığınızdan emin olun ... Örneğin, uduntu'da catdoc sadece hızlı bir şekilde alınabilir.

+0

1 ile gitti. – Droogans

5

Microsoft Office belgelerini HTML'ye veya başka biçimlere dönüştürmek için kullanılan alışılmış araç, daha sonra vwWare olarak yeniden adlandırılmış olan mswordview'dir. Eğer bir komut satırı aracı arıyorsanız

, aslında dönüşümü gerçekleştirmek için AbiWord kullanmanızı tavsiye: Bir kütüphanede arıyorsanız

AbiWord --to=txt 

, wvWare overview page günü başlayacak. Ayrıca a list of libraries and tools which read MS Office documents'u da korurlar.

1

Excel Elektronik Tabloları ile ilgili olarak xlwt iyi. Ancak, .doc ve .ppt dosyalarında yardımcı olmaz.

(Ayrıca PyExcelerator duymuş olabilirsiniz. Xlwt bu bir çatal ve daha iyi korunur o yüzden xlwt ile daha iyi olacağını düşünüyorum.)

1

, antiword veya .doc dosyaları için çok güzel wv eser. (Bir Python çözümü değil, ancak kurulumu ve hızlı olması kolaydır.)

0

XML tabanlı ofis dosyalarını geçmişte kullanılabilir bir şeye işlemek için XSLT'yi kullanmanın bazı başarıları oldu. Mutlaka python tabanlı bir çözüm değil, ama işi halleder.

1

Aynı sorun burada. Aşağıda, "docs /" içindeki tüm doc dosyalarını catdoc kullanarak dir 'txts /' dizinine dönüştürmek için kullanacağım basit bir betik var. Umarım yardımcı olur birisi:

#!/usr/bin/env python 
# -*- coding: utf-8 -*- 

import glob, re, os 
f = glob.glob('docs/*.doc') + glob.glob('docs/*.DOC') 

outDir = 'txts' 
if not os.path.exists(outDir): 
    os.makedirs(outDir) 
for i in f: 
    os.system("catdoc -w '%s' > '%s'" % 
       (i, outDir + '/' + re.sub(r'.*/([^.]+)\.doc', r'\1.txt', i, 
            flags=re.IGNORECASE))) 
+1

Haha ... + 1 python kullanmak için ... bash kullanmak için. OP'nin istekleri ile iyi iş çıkarıyorum. ': D' – Droogans

+0

@Droogans: o, bu çok dilli hızlı komut dosyaları gerçekten ironik. Bash yapmaya başladım, çıkış dosya ismini değiştirmek için kurallar garipleşti, sonra sadece bir python senaryosunun içine koydum. Alt işlem modülü, boru vb. Kullanmadan daha kolay – neves