Форум программистов, компьютерный форум, киберфорум
Python для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.83/75: Рейтинг темы: голосов - 75, средняя оценка - 4.83
1 / 1 / 0
Регистрация: 29.06.2017
Сообщений: 2

Как проигнорировать перенос строки ?

29.06.2017, 07:59. Показов 15693. Ответов 11
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый всем день !
Имеется код - генератор глупых стихов, наборы слов для псевдослучайного генератора хранятся в текстовых файлах с w1 по w9.
Проблема возникает в том месте, где списку cont присваивается построчное содержимое текущего файла, т.е. надо как-то избавится от управляющих символов переноса строки.

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
import random
 
while True:
    file_list=["w1.txt","w2.txt","w3.txt","w4.txt","w5.txt","w6.txt","w7.txt","w8.txt","w9.txt"]
    word=[]
    for cur_file in file_list:
        o_file=open(cur_file,"r")
        cont=o_file.readlines()
        word.append(random.choice(cont))
        o_file.close()
    print("Я в ",word[0]+" ",word[1]+" ",word[2])
    print("Я ",word[3]," ее ",word[4])
    print("Я ",word[5]," ее ",word[6])
    print("Что бы ",word[7]," ",word[8])
    print("")
    ans=input("Еще раз ? Дает ")
    if ans=="Нет" or ans=="нет":
        break
В результате на выходе получается примерно так :

Я в метро
сломал
гюрзу

Я в кустах
ее грызу

Я терпел
ее нахалку

Что бы пылесосить
балку

А надо :

Я в метро сломал гюрзу
Я в кустах ее грызу
Я терпел ее нахалку
Что бы пылесосить балку


Заранее спасибо за возможное содействие
1
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
29.06.2017, 07:59
Ответы с готовыми решениями:

Как убрать перенос строки в конце файла
Код print("ФАЙЛЫ ДОЛЖНЫ НАХОДИТСЯ В 1 ПАПКЕ") file1 = input("Введите имя первого файла (без расширения): ") +...

Как проигнорировать ошибку?
function GetExternalIP:String; var IdHttp1:TIdHttp; s:String; begin s:='0.0.0.0'; IdHttp1:=TIdHttp.Create(nil); try ...

Как проигнорировать нажатие кнопки.
Всем привет. Подскажите пожалуйста чайнику как можна программно проигнорировать нажатие кнопки если в поле EDIT еще ничего не введено...

11
Просто Лис
Эксперт Python
 Аватар для Рыжий Лис
5973 / 3735 / 1099
Регистрация: 17.05.2012
Сообщений: 10,791
Записей в блоге: 9
29.06.2017, 09:00
Вы не против регулярок?
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
import re
import random
 
file_list=["w1.txt","w2.txt","w3.txt","w4.txt","w5.txt","w6.txt","w7.txt","w8.txt","w9.txt"]
word = []
for filename in file_list:
    with open(filename) as f:
        word.extend(re.findall(r'\w+', f.read()))
 
 
while True:
    random.choice(word)
    print("Я в ",word[0]+" ",word[1]+" ",word[2])
    print("Я ",word[3]," ее ",word[4])
    print("Я ",word[5]," ее ",word[6])
    print("Что бы ",word[7]," ",word[8])
    print("")
    ans=input("Еще раз ? Дает ")
    if ans=="Нет" or ans=="нет":
        break
1
1 / 1 / 0
Регистрация: 29.06.2017
Сообщений: 2
29.06.2017, 09:50  [ТС]
Спасибо за идею, я, честно говоря, ничего не знал про регулярные выражения, благодаря вам буду знать
Правда код я все равно немного перепилил - так как в вашем варианте он записывает в строку word все значения из всех файлов по очереди, а должен из каждого выбирать случайно одно. Ну и оператор поиска буквы я заменил на оператор поиска любого символа, кроме новой строки, а то он не понимает составных фраз из слов с предлогом, берет от них только предлог. Ну и определение строки word в теле while для того что бы сбрасывать ее в случае повторного вывода.
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
import re
import random
 
file_list=["w1.txt","w2.txt","w3.txt","w4.txt","w5.txt","w6.txt","w7.txt","w8.txt","w9.txt"]
 
while True:
    word = []
    for filename in file_list:
        with open(filename) as f:
          cont=re.findall(r'.+', f.read())
          word.append(random.choice(cont))
    print("Я в ",word[0]+" ",word[1]+" ",word[2])
    print("Я ",word[3]," ее ",word[4])
    print("Я ",word[5]," ее ",word[6])
    print("Что бы ",word[7]," ",word[8])
    print("")
    ans=input("Еще раз ? Дает ")
    if ans=="Нет" or ans=="нет":
        break
Вот так оно уже все работает согласно задумке.
Еще раз спасибо
0
2923 / 844 / 324
Регистрация: 30.04.2009
Сообщений: 2,633
29.06.2017, 16:37
а если так
Python
1
word.append(random.choice(cont).strip())
0
5 / 5 / 1
Регистрация: 20.05.2017
Сообщений: 44
29.06.2017, 21:51
Python
1
2
3
print("строка", end="")
print(" кода")
print("конец")
Выведет на экран:
строка кода
конец

Добавлено через 5 минут
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# Чтение из файла
#    Для чтения отдельной строки достаточно вызвать метод readline().
#    В конце полученной строки знак переноса - \n,
#    который можно убрать, например, методом str.strip()
fh = None
try:
    fh = open(filename, encoding="utf-8")
    # Читаем первые 3 строки и преобразуем при необходимости
    name = fh.readline().strip()
    age = int(fh.readline())
    weight = float(fh.readline())
    print(name, age, weight)  # Михаил Толстых 35 90.5
finally:
    if fh:
        fh.close()
0
Просто Лис
Эксперт Python
 Аватар для Рыжий Лис
5973 / 3735 / 1099
Регистрация: 17.05.2012
Сообщений: 10,791
Записей в блоге: 9
30.06.2017, 07:50
Цитата Сообщение от Ryker Посмотреть сообщение
print("строка", end="")
print(" кода")
print("конец")
Там проблема была во вводе, а не выводе.
0
5 / 5 / 1
Регистрация: 20.05.2017
Сообщений: 44
30.06.2017, 16:08
Цитата Сообщение от Рыжий Лис Посмотреть сообщение
Там проблема была во вводе, а не выводе.
Вторая часть моего сообщение как разтаки про ввод
0
Просто Лис
Эксперт Python
 Аватар для Рыжий Лис
5973 / 3735 / 1099
Регистрация: 17.05.2012
Сообщений: 10,791
Записей в блоге: 9
30.06.2017, 16:11
Ryker, хорошо, допустим как бы вы прочитали все слова из такого файла?
Code
1
2
3
4
5
слово      где-то в лесу             пели
козы
да
         они самые
стоп
0
5 / 5 / 1
Регистрация: 20.05.2017
Сообщений: 44
30.06.2017, 16:43
Цитата Сообщение от Рыжий Лис Посмотреть сообщение
Ryker, хорошо, допустим как бы вы прочитали все слова из такого файла?
Код
слово где-то в лесу пели
козы
да
они самые
стоп
Вот
Python
1
2
3
4
5
6
7
8
9
10
fh = None
a = ""
try:
    with open("file.txt", encoding="utf-8") as fh:
        for line in fh:
            a += " " + line.strip()
        print(a)
finally:
    if fh:
        fh.close()
результат:
слово где-то в лесу пели козы да они самые стоп
Проблема решена управляющих символов нету
0
Просто Лис
Эксперт Python
 Аватар для Рыжий Лис
5973 / 3735 / 1099
Регистрация: 17.05.2012
Сообщений: 10,791
Записей в блоге: 9
30.06.2017, 16:48
Не-а, между словами не всегда один пробел. Результат вашего кода:
Bash
1
 слово      где-то в лесу             пели козы да они самые стоп
Немного переделал, чтобы было производительней, но вывод тот же. Неправильный:
Python
1
2
3
4
5
ls = []
with open("input.txt", encoding="utf-8") as f:
    for line in f:
        ls.append(line.strip())
print(' '.join(ls))
0
5 / 5 / 1
Регистрация: 20.05.2017
Сообщений: 44
30.06.2017, 16:53
Судя по выводу(из первого сообщ) пробелы там одинарные. Опять-же человек попросил не пробелы убрать, а знаки переноса строки.
0
 Аватар для Semen-Semenich
5222 / 3469 / 1173
Регистрация: 21.03.2016
Сообщений: 8,295
30.06.2017, 22:36
Цитата Сообщение от Рыжий Лис Посмотреть сообщение
хорошо, допустим как бы вы прочитали все слова из такого файла?

Добавлено через 2 минуты
Цитата Сообщение от killerwatz Посмотреть сообщение
надо как-то избавится от управляющих символов переноса строки.
про пробелы ни слова
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
30.06.2017, 22:36
Помогаю со студенческими работами здесь

Как проигнорировать 404 ответ от сервера?
здравствуйте, собственно проблема - не понимаю, как сделать так, чтобы при получении от сервера кода ответа 404 он игнорировался и...

Как проигнорировать стандартные сообщения Excel?
При удалении листа (ActiveWindow.SelectedSheets.Delete) excel выдаёт стандартное сообщение – «В листах, выбранных для удаления, могут...

Как проигнорировать нажатие пробела на кнопке?
Нужно чтобы при нажатии пробела на кнопке ничего не происходило, а enter все так же работал. Заранее спасибо =)

Как программно удалять Relations или как это проигнорировать?
есть несколько таблиц, связанных между собой. все таблицы пустые. Их нужно удалить программно. Пытаюсь сделать так: 'если все записи в...

Как проигнорировать ToogleDesktop для своего приложения
Пишу что-то на подобии виджета Столкнулся с такой проблемой: При нажатии на Win+D или кнопки "Свернуть все окна" приложение...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Новые блоги и статьи
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru