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

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

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

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

http://www.cyberforum.ru/python/thread1827225.html
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
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Как проигнорировать перенос строки ? (Python):

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

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

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

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

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

11
Рыжий Лис
Просто Лис
900 / 438 / 316
Регистрация: 17.05.2012
Сообщений: 1,795
Записей в блоге: 7
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
Рыжий Лис
Просто Лис
900 / 438 / 316
Регистрация: 17.05.2012
Сообщений: 1,795
Записей в блоге: 7
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
Рыжий Лис
Просто Лис
900 / 438 / 316
Регистрация: 17.05.2012
Сообщений: 1,795
Записей в блоге: 7
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
Рыжий Лис
Просто Лис
900 / 438 / 316
Регистрация: 17.05.2012
Сообщений: 1,795
Записей в блоге: 7
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
539 / 335 / 276
Регистрация: 21.03.2016
Сообщений: 1,023
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
Привет! Вот еще темы с решениями:

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

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

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

Как проигнорировать некорректные символы при чтении xml
Всем доброго времени суток. Мой вопрос заключается в следующем. Есть...


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

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

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