2017-01-24 95 views
0

为什么它不删除换行符? 页数确定换行符未被删除。为什么它不删除换行符?

def save(self, *args, **kwargs): 
    self.full_text = re.sub('\n+', '', self.full_text) 
    self.pages_count = str(math.ceil(len(self.full_text.split(' '))/20)) 
    super(Book, self).save(*args, **kwargs) 
+1

? – furas

+1

或'self.full_text =''.join(self.full_text.split('\ n'))'。事实上,你的代码适合我。 – DyZ

+0

@DYZ删除但不保存 –

回答

0

你不能修改self.fulltext,re.sub是好的,如果你使用@property,你会得到一个错误。这里是你所期望的,self.fulltext不会改变。

#!/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

解决你能不能用'self.full_text = self.full_text.replace( '\ n', '')'的一个问题

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) 
相关问题