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

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

27.06.2020, 21:01. Показов 9062. Ответов 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
Ответ Создать тему
Новые блоги и статьи
Автозаполнение реквизита при выборе элемента справочника
Maks 27.03.2026
Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. При выборе "Спецтехники" (Тип Справочник. Спецтехника), заполняется. . .
Сумматор с применением элементов трёх состояний.
Hrethgir 26.03.2026
Тут. https:/ / fips. ru/ EGD/ ab3c85c8-836d-4866-871b-c2f0c5d77fbc Первый документ красиво выглядит, но без схемы. Это конечно не даёт никаких плюсов автору, но тем не менее. . . всё может быть. . .
Автозаполнение реквизитов при создании документа
Maks 26.03.2026
Программный код из решения ниже размещается в модуле объекта документа, в процедуре "ПриСозданииНаСервере". Алгоритм проверки заполнения реализован для исключения перезаписи значения реквизита,. . .
Команды формы и диалоговое окно
Maks 26.03.2026
1. Команда формы "ЗаполнитьЗапчасти". Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. В качестве источника данных. . .
Кому нужен AOT?
DevAlt 26.03.2026
Решил сделать простой ланчер Написал заготовку: dotnet new console --aot -o UrlHandler var items = args. Split(":"); var tag = items; var id = items; var executable = args;. . .
Отправка уведомления на почту при создании или изменении элементов справочника
Maks 24.03.2026
Программная отправка письма электронной почты на примере типового справочника "Склады" в конфигурации БП3. Перед реализацией необходимо выполнить настройку системной учетной записи электронной. . .
модель ЗдравоСохранения 5. Меньше увольнений- больше дохода!
anaschu 24.03.2026
Теперь система здравосохранения уменьшает количество увольнений. 9TO2GP2bpX4 a42b81fb172ffc12ca589c7898261ccb/ https:/ / rutube. ru/ video/ a42b81fb172ffc12ca589c7898261ccb/ Слева синяя линия -. . .
Midnight Chicago Blues
kumehtar 24.03.2026
Такой Midnight Chicago Blues, знаешь?. . Когда вечерние улицы становятся ночными, а ты не можешь уснуть. Ты идёшь в любимый старый бар, и бармен наливает тебе виски. Ты смотришь на пролетающие. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru