2016-10-21 4 views
0

У меня есть строка, в которой есть «\ r \ n», она хочет удалить и вставить туда запятую и иметь пару элементов в массиве.Разделение строки запятой, когда происходит « r n»

Это мой код:

def test_method(self): 
    my_list = self.texts.filter(code='open') 
    for i in my_list: 
     return strip_tags(i.text.replace('\r\n', ',').split(',')) 

my_list является: <class 'django.db.models.query.QuerySet'>

У меня есть только одна строка с запятой.

+0

Что такое 'strip_tags'? .. Что не работает? – Sayse

ответ

0

Я предполагаю, что у вас есть ошибка в том, что он работает только для одной линии.

Это потому, что вы используете return, которая будет возвращать после первой итерации вашего для петли, так что вы можете изменить return к yield и это обеспечит вам генератор можно перебирать снова.

for i in my_list: 
    yield strip_tags(i.text.replace('\r\n', ',').split(',')) 

В противном случае, если его список вы хотите в конечном итоге. Вы должны сделать временный список первый

ret_val = [] 
for i in my_list: 
    ret_val.append(strip_tags(i.text.replace('\r\n', ',').split(','))) 
return ret_val 
0

Как вам требуется массив элементов, как конечный результат, вы можете создать массив из разделенных запятыми

couple_of_elements_comma_separated_string.split («»)

Что вы точно ищете? Что-то другое?

0

Вы получаете только одну строку, потому что вы делаете return внутри цикла for, а не после. И вместо того, чтобы делать .append внутри цикла for, вы можете сделать это со списком. Если предположить, что test_method иначе работает как задумано это будет выглядеть следующим образом:

def test_method(self): 
    my_list = self.texts.filter(code='open') 
    return [strip_tags(i.text.replace('\r\n', ',').split(',')) for i in my_list] 

Однако, если единственное, что вы хотите сделать, это заменить \r\n с , в ваших строк, последняя строка может быть упрощена следующим образом:

return [i.replace('\r\n', ',') for i in my_list]