2016-04-01 10 views
1

Bazı metin dosyalarını açmaya çalışıyorum ve a-z'den tüm karakterleri bu dosyaların içinden alıyorum ve bu karakterlerle daha fazla işlem yapıyorum.ValueError: metin dosyalarını okurken hata ayıklamak için çok fazla değer var

ama hatayı burada ValueError: too many values to unpack

alıyorum Senaryomun başlangıçtır ve onun i hatayı bölünmüş ilgisi

for line in sys.stdin: 

    if ":" in line: 

     filename, line = line.strip().split(':') # this line gives error 

onun şey elde bu kod bloğunun yorumladı hattında görünüyor. ben de dosya adı ayıklamak istiyorum ve Stdin onun formatının

da

filename.txt: Start of the first line inside the text file

i tek metin üzerinde denedim, dosyaları okuduğunda ben bundan önce başka bir yerde çünkü böylece bu şekilde yapmak nedenidir dosya ve işe yaradı ama şimdi tam toplu deneyin ben bu

i hata ilk senaryonunüzerindedir bu

grep -r '' susp-text | ./mapper.py | sort | ./suspicious_reducer.py

gibi konsoldan diyoruz olsun script

büyük resim fazla biriyle bir çizgi olabilir gibi geliyor

Even without the 
nets, caught she will be, from sheer fatigue, (15) owing to the depth of the snow, which balls 
itself under her shaggy feet and clings to her, a sheer dead weight. 

(11) Al. "to envelop the victims in the nets." 

(12) Lit. "whatever the creature is in contact with inside." 

(13) Cf. Aesch. "Prom." 87, {Poto tropo tesd' ekkulisthesei tukhes}. 

(14) Or, "if the creature is not first suffocated in the snow itself." 

(15) See Pollux, v. 50. "She must presently be tired out in the heavy 
    snow, which balls itself like a fatal clog clinging to the under 
    part of her hairy feet." 
+1

tam olarak "ikinci çizgi" nedir:

maksimum bölünmüş miktarı belirterek deneyin? Giriş nedir? Beklenmeyen davranışlar meydana geldiğinde değişkenlerin tam durumu nedir? –

+0

@UlrichEckhardt ikinci satır, aslında üçüncü satır oldu, ben daha net olmak için yorumladı, ben de bir metin dosyası girdiyi koymak, bunun bir şey çıktıktan önce olur bir şey çıktı önce olur değişkenler durumu için Yukarıdaki kod bloğu, bu nedenle komut dosyasını –

+0

durduracak gibi görünüyor. Sorunu kendiniz azaltmalısınız. Başarısız bir çizgi mi okuyor? Belirli bir içeriğe sahip bir çizgiyi ele almak mı? Sadece bu konu üzerinde yoğunlaşın, beklenmedik davranışları gösteren ve bunu buraya yazabilecek minimal bir örnek alın. Site kuralları bunu açıkça talep ediyor çünkü insanlar kodlarını dikkatli bir şekilde indirmeye ve analiz etmeye çalıştığında otomatik olarak çözülecek soruları önler. –

cevap

6

okunan ilk metin dosyasından

#!/usr/bin/env python 

import sys 
import re 

# regular expressions 

pattern = re.compile("[a-zA-Z]*", 
       re.MULTILINE | re.DOTALL | re.IGNORECASE) 

a_to_f_pattern = re.compile("[a-fA-F]", re.IGNORECASE) 
g_to_l_pattern = re.compile("[g-lG-L]", re.IGNORECASE) 
m_to_r_pattern = re.compile("[m-rM-R]", re.IGNORECASE) 
s_to_z_pattern = re.compile("[s-zS-Z]", re.IGNORECASE) 

# Read pairs as lines of input from STDIN 
for line in sys.stdin: 
    print line 
    if ":" in line: 

     filename, line = line.strip().split(':') 
     filename = filename.replace("source_text/", "") 
     filename = filename.replace("suspicious_text/", "") 

     # loop through every word that matches the pattern 
     for word in pattern.findall(line): 
      while i < len(word): 

özü ":" İçinde. Bu durumda, split, ikiden fazla öğeye sahip bir liste döndürür; bu, iki değişkene koymak için çok fazladır.

filename, line = line.strip().split(':', 1) 
+0

Alternatif olarak, '.partition' işlevini kullanın, böylece her zaman üç sonuç elde edersiniz ve istisnalar (kişisel tercih) yerine, eşleşip eşleşmediğini test edebilir. Örneğin. dosya adı, sep, satır = satır.strip() bölüm (':') ',' sep değilse: ... satır atla ... ' – ShadowRanger

İlgili konular