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

Выведите строки, содержащие обратный слеш "\"

27.06.2020, 21:01. Показов 9124. Ответов 12
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
4)Вам дана последовательность строк.
Выведите строки, содержащие обратный слеш "\".
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
27.06.2020, 21:01
Ответы с готовыми решениями:

Обратный слеш
Надо это a\a заменить на ! Вот рабочий код echo preg_replace('#a\\\a#', '!', 'a\a abc'); Почему работает с тремя слешами, если...

обратный слеш в регулярке
добры вечер, естъ проблема в регулярке хачу такои штуку: если слова содержит толко симболи латинского алфавита (маленкие) и обратный...

Обратный слеш: в чем специфика?
Код: $rod_grupp = "\"; echo "<br />$rod_grupp "; В редакторе подсветка кода при написании слеша гаснет, указывая на ошибку. А...

12
0 / 0 / 1
Регистрация: 18.05.2020
Сообщений: 10
28.06.2020, 00:55
Лучший ответ Сообщение было отмечено mik-a-el как решение

Решение

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
string1 = r'\text'
string2 = r'te\xt'
string3 = r'text\/'
string4 = r'text/'
string5 = r'text'
 
allstrings = [string1, string2, string3, string4, string5]
 
stringsweneed = []
 
for string in allstrings:
    if '\\' in string:
        stringsweneed.append (string)
 
print (stringsweneed)
0
1732 / 970 / 199
Регистрация: 22.02.2018
Сообщений: 2,693
Записей в блоге: 6
28.06.2020, 02:22
Python
1
2
3
4
5
6
strings1 = r"'\text' 'te\xt' 'text\/' 'text/' 'text'"
print(strings1)
strings = strings1.split()
 
for s in strings:
    if ('\\' in s): print(s)
Вывод:
Python
1
2
3
4
'\text' 'te\xt' 'text\/' 'text/' 'text'
'\text'
'te\xt'
'text\/'
Добавлено через 6 минут
Redavoi, Из условия не понятно, в каком виде хранятся строки. Если это строки в файле, то они все содержат как минимум один символ \ в конце строки \n . Если эти символы не учитывать, то их нужно убирать, прежде чем искать нужные строки.

Добавлено через 5 минут
Убрать символы конца строки можно с помощью str.rstrip()
0
Эксперт PythonЭксперт Java
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
28.06.2020, 08:54
Цитата Сообщение от Viktorrus Посмотреть сообщение
то они все содержат как минимум один символ \ в конце строки \n
3
Просто Лис
Эксперт Python
 Аватар для Рыжий Лис
5973 / 3735 / 1099
Регистрация: 17.05.2012
Сообщений: 10,791
Записей в блоге: 9
28.06.2020, 10:13
Цитата Сообщение от Viktorrus Посмотреть сообщение
то они все содержат как минимум один символ \ в конце строки \n
Расскажи, мне, где тут в файле \n:
Bash
1
2
3
4
5
6
7
8
$ hexdump -C 1.c
00000000  2f 2f 23 69 6e 63 6c 75  64 65 20 3c 73 74 64 69  |//#include <stdi|
00000010  6f 2e 68 3e 0a 0a 69 6e  74 20 6d 61 69 6e 28 29  |o.h>..int main()|
00000020  7b 0a 20 20 2f 2f 70 75  74 73 20 28 22 48 65 6c  |{.  //puts ("Hel|
00000030  6c 6f 2c 20 57 6f 72 6c  64 21 22 29 3b 0a 20 20  |lo, World!");.  |
00000040  72 65 74 75 72 6e 20 30  62 30 30 30 30 31 3b 0a  |return 0b00001;.|
00000050  7d 0a                                             |}.|
00000052
А потом разницу между \n и \r\n
3
Эксперт PythonЭксперт Java
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
28.06.2020, 11:07
Цитата Сообщение от Рыжий Лис Посмотреть сообщение
где тут в файле \n
Да их тут тыщи!!! (С)

1
1732 / 970 / 199
Регистрация: 22.02.2018
Сообщений: 2,693
Записей в блоге: 6
28.06.2020, 16:50
Цитата Сообщение от Рыжий Лис Посмотреть сообщение
Расскажи, мне, где тут в файле \n:
С символом \n (это один символ) связано много тонкостей. Об этом у Лутца написано много.
Лутц М. Программирование на Python. Том 1 (4-е издание, 2011) стр. 224-228
Лутц М. Изучаем Python (4-е издание, 2011) стр. 1023
Приведу только частичные выдержки из его книг.
Кликните здесь для просмотра всего текста
"о историческим причинам конец строки текста в файле представляется на разных платформах различными символами. В Unix и Linux – это одиночный символ \n, а в Windows – это последовательность из двух символов \r\n. В результате файлы, перемещаемые между Linux и Windows, могут после передачи странно выглядеть в текстовом редакторе – они могут сохранить окончание строки, принятое на исходной платформе. Например, большинство текстовых редакторов для Windows обрабатывает текст в формате Unix, но Блокнот (Notepad) составляет заметное исключение – текстовые файлы, скопированные из Unix или Linux, обычно выглядят в Блокноте, как одна большая строка со странными символами внутри (\n). Точно так же при копировании файлов из Windows в Unix в двоичном режиме в них сохраняется символ \r (который в текстовых редакторах часто отображается как ^M).
Сценариям на языке Python это обычно безразлично, потому что объекты файлов автоматически отображают последовательность DOS \r\n в одиночный символ \n. При выполнении сценариев в Windows это действует так:
• Для файлов, открытых в текстовом режиме, при чтении \r\n преобразуется в \n.
• Для файлов, открытых в текстовом режиме, при записи \n преобразуется в \r\n.
• Для файлов, открытых в двоичном режиме, никакие преобразования не производятся.
Следует запомнить два важных следствия из этих правил. Во-первых, почти всегда во всех сценариях на языке Python символ конца строки представляется одиночным \n, независимо от способа его сохранения во внешних файлах на соответствующей платформе. Путем соответствующего преобразования \n при чтении и записи Python скрывает присущие платформам различия. Второе следствие из этого преобразования более тонкое: при обработке двоичных файлов использование двоичного режима (например, rb, wb) отключает механизм преобразования символов конца строки. Если выбрать неправильный режим, указанные преобразования вполне могут повредить данные, как при чтении, так и при записи, – случайно оказавшиеся среди двоичных данных байты \r могут быть ошибочно отброшены при чтении или ошибочно добавлены к байтам \n при записи. В итоге двоичные данные окажутся искаженными, что, вероятно, совсем не то, что вам хотелось бы получить при работе с изображениями или аудиоклипами! В Python 3.X эта проблема ушла на задний план, потому что мы в принципе не можем использовать двоичные данные с файлами, открытыми в текстовом режиме, из-за того, что текстовый режим предполагает автоматическое применение кодировок Юникода к содержимому файлов. Операции чтения и записи просто будут терпеть неудачу, если данные не смогут быть декодированы при чтении или закодированы при записи. Использование двоичного режима позволяет избежать ошибок, связанных с преобразованием Юникода, и автоматически запрещает преобразование символов конца строки как таковое (ошибки, связанные с преобразованием Юникода, можно было бы перехватывать в инструкции try). Итак, стоит запомнить как отдельный факт, что двоичный режим предохраняет двоичные данные от искажения в результате преобразования символов конца строки, особенно если вы работаете только с текстовыми данными ASCII, когда можно смело забыть обо всех проблемах, связанных с Юникодом.
При записи в двоичном режиме, напротив, предотвращаются любые преобразования, как и предполагалось, даже когда данные содержат байты, которые в текстовом режиме интерпретировались бы как часть символов конца строки (при выводе строк байтов отдельные байты выводятся как символы ASCII, если они соответствуют печатаемым символам, и как экранированные шестнадцатеричные последовательности в противном случае):
Python
1
2
3
4
5
6
>>> data = b'a\0b\rc\r\nd'             # 4 байта, 4 обычных символа 
>>> len(data) 
8 
>>> open('temp.bin', 'wb').write(data) # запись двоичных данных как есть 8 
>>> open('temp.bin', 'rb').read()      # чтение двоичных данных: 
b'a\x00b\rc\r\nd'                      # без преобразования
Но при чтении двоичных данных в текстовом режиме, неважно, случайно или нет, механизм преобразования символов конца строки может повредить данные.
При записи в двоичном режиме, напротив, предотвращаются любые преобразования, как и предполагалось, даже когда данные содержат байты, которые в текстовом режиме интерпретировались бы как часть символов конца строки (при выводе строк байтов отдельные байты выводятся как символы ASCII, если они соответствуют печатаемым символам, и как экранированные шестнадцатеричные последовательности в противном случае):
Python
1
2
3
4
5
6
7
>>> data = b'a\0b\rc\r\nd'             # 4 байта, 4 обычных символа 
>>> len(data) 
8 
>>> open('temp.bin', 'wb').write(data) # запись двоичных данных как есть 
8 
>>> open('temp.bin', 'rb').read()      # чтение двоичных данных: 
b'a\x00b\rc\r\nd'                      # без преобразования
Но при чтении двоичных данных в текстовом режиме, неважно, случайно или нет, механизм преобразования символов конца строки может повредить данные (предполагая, что вообще при декодировании не возникло ошибок, как с нашими ASCII-данными на платформе Windows):
Python
1
2
>>> open('temp.bin', 'r').read()     # чтение в текстовом режиме: искажены 
\r! 'a\x00b\nc\nd'
Тот же эффект может возникнуть при записи двоичных данных в текстовом режиме – могут изменяться или вставляться байты, значения которых совпадают с символами конца строки (и снова имеются в виду данные, успешно прошедшие этап кодирования в кодировку по умолчанию для текущей платформы):
Python
1
2
3
4
5
6
7
8
>>> open('temp.bin', 'w').write(data)  # в текстовом режиме должна 
TypeError: must be str, not bytes      # передаваться строка типа str                                       # используйте bytes.decode()                                         # для преобразования типа
Инструменты для работы с файлами  227
>>> data.decode() 'a\x00b\rc\r\nd' 
>>> open('temp.bin', 'w').write(data.decode()) 
8 
>>> open('temp.bin', 'rb').read()      # запись в текстовом режиме: добавит \r b'a\x00b\rc\r\r\nd'
>>> open('temp.bin', 'r').read()       # опять искажение, изменит \r 'a\x00b\nc\n\nd'
Проще говоря, запомните, что во всех текстовых файлах при определении конца строки следует ориентироваться на символ \n, а двоичные файлы всегда должны открываться в двоичном режиме, чтобы предотвратить преобразование символов конца строки и кодирование/ декодирование символов Юникода. Вообще тип содержимого файла определяется режимом его открытия, а режимы открытия определяют способы обработки содержимого, что в точности соответствует нашим желаниям."

"Проще говоря, запомните, что во всех текстовых файлах при определении конца строки следует ориентироваться на символ \n, а двоичные файлы всегда должны открываться в двоичном режиме, чтобы предотвратить преобразование символов конца строки и кодирование/ декодирование символов Юникода. Вообще тип содержимого файла определяется режимом его открытия, а режимы открытия определяют способы обработки содержимого, что в точности соответствует нашим желаниям."


Как видите все не так просто. Поэтому я и обратил внимание на то, что важно в каком виде мы рассматриваем в условии строки.
0
Эксперт PythonЭксперт Java
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
28.06.2020, 17:15
Цитата Сообщение от Viktorrus Посмотреть сообщение
С символом \n (это один символ) связано много тонкостей.
Да при чем тут символ перевода строки? Ищем слэши!
1
1732 / 970 / 199
Регистрация: 22.02.2018
Сообщений: 2,693
Записей в блоге: 6
28.06.2020, 18:34
Цитата Сообщение от iSmokeJC Посмотреть сообщение
Да при чем тут символ перевода строки? Ищем слэши!
Дело в том, что в зависимости от того, какой символ идет за слэшем, он может сливаться с ним в один символ (не путать с байтами). Когда мы нажимаем на клавиатуре Enter, то в текст вводится символ \n. Такие слэши мы учитываем? В условии ничего не сказано. В условии ничего не сказано, что мы работаем только с кириллицей. А когда латиница, то вводимый нами слэш может сливаться с идущим за ним символом в один символ, как например \t . В этом случае слэш учитывать? В условии про это ничего не сказано. Поэтому я считаю условие задано не четко.
Ладно, делайте как хотите. Я задачи с нечеткими условиями не решаю.
0
Просто Лис
Эксперт Python
 Аватар для Рыжий Лис
5973 / 3735 / 1099
Регистрация: 17.05.2012
Сообщений: 10,791
Записей в блоге: 9
28.06.2020, 19:34
Цитата Сообщение от Viktorrus Посмотреть сообщение
он может сливаться с ним в один символ
Не может. Это экранирование.

Цитата Сообщение от Viktorrus Посмотреть сообщение
акие слэши мы учитываем?
нет, так как слешей в тексте нет.
0
1732 / 970 / 199
Регистрация: 22.02.2018
Сообщений: 2,693
Записей в блоге: 6
28.06.2020, 20:58
Цитата Сообщение от Рыжий Лис Посмотреть сообщение
Не может. Это экранирование.
Пример1:
Python
1
2
3
4
5
>>> s = 'abc\t'
>>> s
'abc\t'
>>> len(s)
4
\t здесь воспринимается как один символ.
Пример2:
Python
1
2
3
>>> s2 = 'абв'
>>> len(s2)
5
А здесь флэш, это отдельный символ.

Экранированные последовательности, это как раз тот случай, когда слэш не воспринимается как самостоятельный символ.
Пример:
Python
1
2
3
4
5
>>> S = '\xc4\xe8' # Экранированные 
                                   последовательности 
                                    шестнадцатеричных 
>>> S                         # значений байтов 
'Äè'
Что касается экранирования, то о нем, если будет желание, поговорим в другой раз. А то я устал.
0
Просто Лис
Эксперт Python
 Аватар для Рыжий Лис
5973 / 3735 / 1099
Регистрация: 17.05.2012
Сообщений: 10,791
Записей в блоге: 9
29.06.2020, 05:04
Viktorrus, я не знаю, что вы пытаетесь доказать себе (или нам).

Python
1
2
3
4
5
6
7
8
>>> 'abc\t' == 'abc\x09'
True
>>> '\\' in 'abc\t'
False
>>> 'абс'
'абс\\д'
>>> '\\' in 'абс'
True
0
1732 / 970 / 199
Регистрация: 22.02.2018
Сообщений: 2,693
Записей в блоге: 6
29.06.2020, 10:35
Цитата Сообщение от Рыжий Лис Посмотреть сообщение
я не знаю, что вы пытаетесь доказать себе (или нам).
Я пытался показать вам, что в условии задачи не четко определено, какие обратные слэши нужно искать. Но больше пытаться не буду. Потому что видимо это бесполезно. Вы сами до фантазировали условие задачи , какие обратные слэши нужно искать. Удачи!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
29.06.2020, 10:35
Помогаю со студенческими работами здесь

Добавить в строку обратный слеш '\'
Как в string можно добавить символ &quot;&quot;?

Как напечать обратный слеш?
хочу заменить / на \

Заменить обратный слеш на обычный
К примеру, у нас есть ссылка:...

Выведите на экран все слова из строки, содержащие 3 цифры
Выведите на экран все слова из строки, содержащие 3 цифры

Обратный слеш (\) на андроид, как напечатать?
Кто-нибудь с таким сталкивался? Я не смог найти на своем смартфоне данный символ.


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

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Новые блоги и статьи
Модель заражения группы наркоманов
alhaos 17.04.2026
Условия задачи сформулированы тут Суть: - Группа наркоманов из 10 человек. - Только один инфицирован ВИЧ. - Колются одной иглой. - Колются раз в день. - Колются последовательно через. . .
Мысли в слух. Про "навсегда".
kumehtar 16.04.2026
Подумалось тут, что наверное очень глупо использовать во всяких своих установках понятие "навсегда". Это очень сильное понятие, и я только начинаю понимать край его смысла, не смотря на то что давно. . .
My Business CRM
MaGz GoLd 16.04.2026
Всем привет, недавно возникла потребность создать CRM, для личных нужд. Собственно программа предоставляет из себя базу данных клиентов, в которой можно фиксировать звонки, стадии сделки, а также. . .
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . . а удачный момент так и не приходит.
Фиксация колонок в отчете СКД
Maks 14.04.2026
Фиксация колонок в СКД отчета типа Таблица. Задача: зафиксировать три левых колонки в отчете. Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка) / / . . .
Настройки VS Code
Loafer 13.04.2026
{ "cmake. configureOnOpen": false, "diffEditor. ignoreTrimWhitespace": true, "editor. guides. bracketPairs": "active", "extensions. ignoreRecommendations": true, . . .
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2. Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива. Было так:. . .
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru