Форум программистов, компьютерный форум, киберфорум
Наши страницы
Python
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/3: Рейтинг темы: голосов - 3, средняя оценка - 5.00
killerwatz
0 / 0 / 0
Регистрация: 29.06.2017
Сообщений: 2
#1

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

29.06.2017, 07:59. Просмотров 592. Ответов 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
В результате на выходе получается примерно так :

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

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

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

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

А надо :

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


Заранее спасибо за возможное содействие
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
29.06.2017, 07:59
Ответы с готовыми решениями:

Перенос строки в питон
Столкнулся с проблемой. Работаю под Linux U. Хочу чтобы в выходном файле текст...

Перенос строки без выполнения команды
Начал изучать питон (пайтон) и конечно же в процессе появилось множество...

Как проигнорировать ошибку?
function GetExternalIP:String; var IdHttp1:TIdHttp; s:String; begin ...

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

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

11
Рыжий Лис
Просто Лис
1186 / 510 / 343
Регистрация: 17.05.2012
Сообщений: 2,062
Записей в блоге: 8
29.06.2017, 09:00 #2
Вы не против регулярок?
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
killerwatz
0 / 0 / 0
Регистрация: 29.06.2017
Сообщений: 2
29.06.2017, 09:50  [ТС] #3
Спасибо за идею, я, честно говоря, ничего не знал про регулярные выражения, благодаря вам буду знать
Правда код я все равно немного перепилил - так как в вашем варианте он записывает в строку 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
mamedovvms
2918 / 839 / 324
Регистрация: 30.04.2009
Сообщений: 2,633
29.06.2017, 16:37 #4
а если так
Python
1
word.append(random.choice(cont).strip())
0
Ryker
3 / 3 / 1
Регистрация: 20.05.2017
Сообщений: 27
29.06.2017, 21:51 #5
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
Рыжий Лис
Просто Лис
1186 / 510 / 343
Регистрация: 17.05.2012
Сообщений: 2,062
Записей в блоге: 8
30.06.2017, 07:50 #6
Цитата Сообщение от Ryker Посмотреть сообщение
print("строка", end="")
print(" кода")
print("конец")
Там проблема была во вводе, а не выводе.
0
Ryker
3 / 3 / 1
Регистрация: 20.05.2017
Сообщений: 27
30.06.2017, 16:08 #7
Цитата Сообщение от Рыжий Лис Посмотреть сообщение
Там проблема была во вводе, а не выводе.
Вторая часть моего сообщение как разтаки про ввод
0
Рыжий Лис
Просто Лис
1186 / 510 / 343
Регистрация: 17.05.2012
Сообщений: 2,062
Записей в блоге: 8
30.06.2017, 16:11 #8
Ryker, хорошо, допустим как бы вы прочитали все слова из такого файла?
Код
слово      где-то в лесу             пели
козы
да
         они самые
стоп
0
Ryker
3 / 3 / 1
Регистрация: 20.05.2017
Сообщений: 27
30.06.2017, 16:43 #9
Цитата Сообщение от Рыжий Лис Посмотреть сообщение
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
Рыжий Лис
Просто Лис
1186 / 510 / 343
Регистрация: 17.05.2012
Сообщений: 2,062
Записей в блоге: 8
30.06.2017, 16:48 #10
Не-а, между словами не всегда один пробел. Результат вашего кода:
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
Ryker
3 / 3 / 1
Регистрация: 20.05.2017
Сообщений: 27
30.06.2017, 16:53 #11
Судя по выводу(из первого сообщ) пробелы там одинарные. Опять-же человек попросил не пробелы убрать, а знаки переноса строки.
0
Semen-Semenich
567 / 357 / 290
Регистрация: 21.03.2016
Сообщений: 1,080
30.06.2017, 22:36 #12
Цитата Сообщение от Рыжий Лис Посмотреть сообщение
хорошо, допустим как бы вы прочитали все слова из такого файла?

Добавлено через 2 минуты
Цитата Сообщение от killerwatz Посмотреть сообщение
надо как-то избавится от управляющих символов переноса строки.
про пробелы ни слова
0
30.06.2017, 22:36
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
30.06.2017, 22:36

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

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

Как проигнорировать последовательность символов в std::cin?
Есть два числа, разделенных последовательностью "--:". Если бы это делалось при...


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

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru