2017-01-24 1 views
0

Warum werden die Zeilenumbrüche nicht entfernt? Anzahl der Seiten, die für Zeilenumbrüche bestimmt sind, werden nicht entfernt.Warum werden die Zeilenumbrüche nicht entfernt?

+1

können Sie nicht 'self.full_text = self.full_text.replace ('\ n', '') verwenden'? – furas

+1

Oder 'self.full_text = '' .join (self.full_text.split ('\ n'))'. Tatsächlich funktioniert dein Code für mich. – DyZ

+0

@DYZ entfernt, speichert aber nicht –

Antwort

0

Sie können Self.Fulltext nicht ändern, das Re ist OK, wenn Sie @property verwenden, erhalten Sie einen Fehler. Hier ist was du erwartest, self.fulltext wird sich nicht ändern.

#!/usr/bin/env python 
    import unittest 
    import re 

    class Attribute(object): 
     def __init__(self): 
      self.fulltext = 'a\nb\nc\n\n1\n2\n' 

     def remove_newline(self, text): 
      txt_new = text 
      txt_new = re.sub('\n+', '', txt_new) 
      return txt_new 

     def remove_newline_class_attr(self): 
      self.fulltext = re.sub('\n+', '', self.fulltext) 
      return self.fulltext 

    class TestAttribute(unittest.TestCase): 

     def setUp(self): 
      attr = Attribute() 
      self.attr = attr 
      self.txt_wo_newline = 'abc12' 

     def test_remove_newline(self): 
      fulltext = self.attr.fulltext 
      txt = self.attr.remove_newline(fulltext) 
      self.assertEquals(txt, self.txt_wo_newline) 

     def test_property_no_change(self): 
      fulltext = self.attr.fulltext 
      txt = self.attr.remove_newline_class_attr() 
      self.assertEquals(txt, self.attr.fulltext) 

    if __name__ == '__main__': 
     suite = unittest.TestLoader().loadTestsFromTestCase(TestAttribute) 
     unittest.TextTestRunner(verbosity=2).run(suite) 
0

ein Problem gelöst

def save(self, *args, **kwargs): 
    self.full_text = self.full_text.split('\r\n') 
    self.pages = str(math.ceil(len(self.full_text.split(' '))/20)) 
    super(Book, self).save(*args, **kwargs) 
Verwandte Themen