Member 13870077 Ответов: 3

Для цикла не учитывая всю строку в моем file.txt


То evenements.txt имеет в общей сложности 160 линий. Я не буду вдаваться в слишком много деталей, так как хочу иметь возможность самостоятельно изучить остальную часть кода. Но когда я запускаю этот код с помощью for loop in liste_evenement , я считаю, что он возвращает только последнюю строку evenements.txt вместо всех линий. Что я упускаю? Код должен возвращать список событий, разделенных в разных списках. Итак, в моем списке есть списки, и я использую .split, чтобы отделить элемент в моих списках(это связано с моей оценкой, но это не о моем вопросе, я просто даю вам, ребята, некоторую предысторию). Но мой фактический вопрос здесь касается проблемы, когда я печатаю свой words который не возвращает весь файл целиком.




with open("evenements.txt", "r", encoding="utf-8-sig") as evenement:
    liste_evenement = evenement.readlines()

    words = []
    for line in liste_evenement:
        words = line.split(" ")
    
    print(words)




Код должен вернуться :

   
[['Danse', 'Samedi de danser...', 202, 202],
                      ['Musique', 'Peter Gunn : spécial rétro francophone', 203, 205],
                      ['Musique', 'Eletric Power Trio', 212, 212],
                      ['Théâtre', 'Hamlet', 212, 212]]



это французский язык, но вы понимаете картину. таким образом, каждый список моего глобального списка-это событие. И пока это только возвращение :

['Musique/Festival', 'OFF', 'de', 'Québec/2018-07-04/2018-07-08']


Я считаю, что это последняя строка файла, которая имеет в общей сложности 160 строк, как уже упоминалось. А теперь не могли бы вы также помочь мне удалить их '/' в Кодексе это было бы здорово. Потому что мне трудно манипулировать списком. Спасибо!




EDIT : мне удалось поместить их все в разные списки, но у меня возникли проблемы с добавлением их всех в другой список, а также с удалением '\n'

Обновленный код :

with open("evenements.txt", "r", encoding="utf-8-sig") as evenement:
    liste_evenement = evenement.readlines()

    words = []

    for line in liste_evenement:
        words = line.split("/")

        print(words)


Вот что он возвращается прямо сейчас :

['Musique', 'Shawn Phillips', '2018-08-24', '2018-08-24\n']
['Musique', "L'avenue Royale fête l'été!", '2018-08-25', '2018-08-25\n']
['Musique', 'Perséides musicales', '2018-08-03', '2018-08-03\n']
['Musique', 'Gaétan Leclerc chante Félix et…', '2018-08-17', '2018-08-17\n']
['Musique', 'The Ring of Fire : a Johnny Cash Experience', '2018-07-21', '2018-07-21\n']
['Musique', "Jazz'Art", '2018-07-27', '2018-07-29\n']
['Musique', 'Génération Crooners', '2018-07-07', '2018-07-07\n']
['Musique', 'Fiesta Latina avec Me llamo Son', '2018-07-14', '2018-07-14\n']
['Musique', "L'avenue Royale fête l'été!", '2018-08-25', '2018-08-25\n']
['Musique', 'Concert au jardin', '2018-07-04', '2018-07-04\n']
['Musique', 'Concert au jardin', '2018-07-11', '2018-07-11\n']



И я хочу, чтобы он вернулся. :



[['Musique', 'Shawn Phillips', '2018-08-24', '2018-08-24]
['Musique', "L'avenue Royale fête l'été!", '2018-08-25', '2018-08-25]
['Musique', 'Perséides musicales', '2018-08-03', '2018-08-03]
['Musique', 'Gaétan Leclerc chante Félix et…', '2018-08-17', '2018-08-17]
['Musique', 'The Ring of Fire : a Johnny Cash Experience', '2018-07-21', '2018-07-21]
['Musique', "Jazz'Art", '2018-07-27', '2018-07-29]
['Musique', 'Génération Crooners', '2018-07-07', '2018-07-07]
['Musique', 'Fiesta Latina avec Me llamo Son', '2018-07-14', '2018-07-14]
['Musique', "L'avenue Royale fête l'été!", '2018-08-25', '2018-08-25]
['Musique', 'Concert au jardin', '2018-07-04', '2018-07-04]
['Musique', 'Concert au jardin', '2018-07-11', '2018-07-11]]


Так что у меня возникли проблемы с составлением списка этих списков и удалением "\n" в моих списках.

Что я уже пробовал:

Я перепробовал так много вещей, что даже не могу вспомнить. Это единственный код, который позволил мне удалить обратную косую черту, имея возможность разделить мой список с помощью функции split. Мне было трудно использовать .split() и кучу других вещей в списке.

Mohibur Rashid

Ищите двухмерный массив

Richard MacCutchan

Если это вы проголосовали за 1 на все эти ответы, вам нужно прочитать их снова и спросить себя, что с ними не так.

Patrice T

вы должны добавить обновленный код.

3 Ответов

Рейтинг:
6

Maciej Los

На первый взгляд, вы должны разделить строки на несколько разделителей:


  • [
  • ]
  • ,


[РЕДАКТИРОВАТЬ]
Похоже, вам тоже нужен второй цикл - чтобы иметь возможность печатать одно "слово".

Видеть:
Как использовать Split в Python[^]
Python: разделенная строка с несколькими разделителями - переполнение стека[^]
Дляпеременная Элемента - Питон Вики[^]


Рейтинг:
28

OriginalGriff

Ну да - так и будет.
Каждый раз, когда вы идете по кругу, вы перезаписываете содержимое words - Итак, единственный текст, который вы видите после цикла, - это последний, который вы добавили.

Вам нужно использовать append метод: Массивы Python[^]


Рейтинг:
18

Patrice T

Цитата:
Что я упускаю? Предполагается, что код возвращает список событий, разделенных в разных списках.

with open("evenements.txt", "r", encoding="utf-8-sig") as evenement:
    liste_evenement = evenement.readlines()

    words = []
    for line in liste_evenement:
        words = line.split(" ") # replace variable words with the words of current line
                                # but previous contain is lost
    
    print(words) # this prints list of words, but only after the loop

with open("evenements.txt", "r", encoding="utf-8-sig") as evenement:
    liste_evenement = evenement.readlines()

    words = []
    for line in liste_evenement:
        words = line.split(" ")
        print(words) # this prints list of words for each line

Чтобы получить желаемый результат, вам нужно добавлять результат работы line.split(" ") в words.
дополнительные сведения см. В документации.


Member 13870077

Спасибо, но я только что заметил, что у меня все еще есть обратная косая черта ('\n') из моего файла, и ее довольно трудно использовать . Есть ли способ, которым я мог бы удалить его, сохраняя этот код

Patrice T

Воспользуйся Улучшить вопрос чтобы обновить ваш вопрос.
Чтобы каждый мог обратить внимание на эту информацию.

Member 13870077

сделано.