Как убрать выделение символа
Перейти к содержимому

Как убрать выделение символа

  • автор:

Как убрать выделение?

фиолетовое выделение мешает

Как убрать это фиолетовое выделение, из-за него путь читает не так

Отслеживать

задан 25 апр 2021 в 23:01

86 9 9 бронзовых знаков

1 ответ 1

Сортировка: Сброс на вариант по умолчанию

Во-первых, подсветка в IDE неверная и никакое дополнительное экранирование не требуется: https://ideone.com/38GBdj

print(r'\\Desktop\\some-file.txt') print('\\Desktop\\some-file.txt') print(r'\Desktop\some-file.txt') 
\\Desktop\\some-file.txt \Desktop\some-file.txt \Desktop\some-file.txt 

Во-вторых, путь \Desktop\some-file.txt действительно не существует, поскольку это путь относительно корня текущего диска: C:\Desktop\some-file.txt . А в варианте \\Desktop\\some-file.txt это вообще сетевой путь, где Desktop — имя компьютера, а some-file.txt должно быть его разделяемым ресурсом. Если убрать начальные слеши, то Desktop станет именем папки в текущем каталоге, но и это будет неверно. Правильно так:

filepath = r'some-file.txt' 

Как убрать подсветку букв в VSCODE?

Недавно появилась обводка у гласных букв в VSCode, только для русского текста, в разных файлах , установка/ удаление пакета русского языка никак не влияет
изменение в теге html lang=»en» => lang=»ru» тоже
Очень неудобно когда много текста и весь в рамочку , может есть идеи как исправить

61bb31f7eb546044920318.png

  • Вопрос задан более двух лет назад
  • 6362 просмотра

5 комментариев

Простой 5 комментариев

Как удалить символ из строки Python: инструкция

В текстах часто встречаются символы, которые мешают корректной обработке информации. Например, в социальных сетях часто используются смайлы, которые могут мешать анализу текста. В таких случаях удаление символов из строки необходимо для правильной обработки информации. В Python существует несколько способов удаления символов из строк, которые рассмотрим в этой статье.

Удаление символа по индексу

В этом разделе мы рассмотрим способы удаления символов из строки по индексам, а именно:

  • как удалить символы с помощью цикла;
  • как удалить символы с помощью среза.

Как удалить символ из строки с помощью цикла

Вы можете удалить символ из строки в Python, используя цикл:

my_string = "Timeweb 0 cloud"
result_string = ""
index = 8

for i in range(len(my_string)):
if i != index:
result_string += my_string[i]

print(result_string)
Timeweb cloud

В этом примере мы хотим удалить из строки символ «0» c индекс 8. Для этого мы используем цикл for для прохода по символам строки my_string . Затем мы проверяем, совпадает ли i с переменной index , на котором находится элемент, который мы хотим удалить. Если i и index не совпадают, то мы добавляем текущий символ к новой строке result_string . В конце цикла новая строка result_string будет содержать все символы из строки my_string , за исключением символа с индексом 8.

Теперь рассмотрим, как в Python удалить последний символ в строке:

my_string = "Timeweb cloud."
result_string = ""
index = len(my_string)

for i in range(index-1):
result_string += my_string[i]

print(result_string)
Timeweb cloud

В качестве index можно использовать массив и удалять таким образом не один, а несколько символов:

my_string = "1Timeweb 0cloud"
result_string = ""
index = [0,9]

for i in range(len(my_string)):
if i not in index:
result_string += my_string[i]

print(result_string)
Timeweb cloud

Работа этого отрывка кода аналогична предыдущему, за исключением того, что в этот раз мы проверяем, содержит ли index число i . К слову, точно таким же образом мы можем удалять конкретные символы:

my_string = "1Timeweb 0cloud"
result_string = ""
index = ["0","1"]

for i in my_string:
if i not in index:
result_string += i

print(result_string)
Timeweb cloud

Как удалить символы с помощью среза

Чтобы удалить символы из строки в Python по индексу, можно использовать срезы (slices). Срезы позволяют выбрать часть строки по начальному и конечному индексу. Если вы хотите удалить символы из строки, вы можете воспользоваться срезом.

Например, чтобы удалить символ в строке my_string с индексом n , можно использовать следующую конструкцию:

my_string = my_string[:n] + my_string[n+1:]

Эта конструкция создает новую строку, состоящую из части строки my_string до индекса n , после чего добавляет часть строки my_string после индекса n+1 . Это эквивалентно удалению символа с индексом n :

my_string = "Timeweb 0cloud"
n =8

my_string = my_string[:n] + my_string[n+1:]

print(my_string)
Timeweb cloud

Также с помощью срезов можно удалить несколько подряд идущих символов. Например, чтобы удалить символы с индекса n по m , используйте такую конструкцию:

my_string = my_string[:n] + my_string[m+1:]

В результате вы получите новую строку, состоящую из начальной и конечной частей:

my_string = "Timeweb1111 0 cloud"
n = 7
m = 12

my_string = my_string[:n] + my_string[m+1:]

print(my_string)
Timeweb cloud

replace()

Метод replace() позволяет заменить одни символы в строке на другие. В качестве замены может выступать пустая строка, что будет эквивалентно удалению. Например:

my_string = "Timeweb1111 cloud"
my_string = my_string.replace("1","")

print(my_string)
Timeweb cloud

Чтобы удалить несколько разных символов из строки с помощью replace() , вы можете вызвать этот метод несколько раз, передав в качестве аргументов разные символы. Например:

my_string = "Timeweb1111 0000cloud"
my_string = my_string.replace("1", "").replace("0", "")

print(my_string)
Timeweb cloud

Вы также можете использовать цикл for и функцию replace() , чтобы удалить несколько символов из строки. Например:

my_string = "Timeweb1111 0000cloud"
chars_to_remove = ["1", "0"]

for char in chars_to_remove:
my_string = my_string.replace(char, "")

print(my_string)
Timeweb cloud

translate()

Для удаления символа из строки в Python вы можете использовать метод translate() .

Метод принимает на вход словарь или таблицу перевода и заменяет, в соответствии с входными аргументами, символы в строке. Чтобы удалить символ, вы можете указать пустую строку в качестве значения для этого символа.

Например, это может быть полезно, чтобы удалить сразу несколько символов:

def remove_commas(string): 
trans_table =
return string.translate(trans_table)

my_string = "В этой, строке, нет: знаков препинания."

print(remove_commas(my_string))
В этой строке нет знаков препинания

Регулярные выражения

Чтобы удалить символы из строки с помощью регулярных выражений в Python, вы можете использовать метод re.sub() . Этот метод, как и два предыдущих, заменяет символы в строке. На вход он принимает три аргумента: регулярное выражение, строку замены и исходную строку. В качестве результата метод возвращает новую строку, в которой все совпадения регулярного выражения будут заменены. Если нужно удалить символы из строки, то можно использовать пустую строку в качестве строки замены.

Например, этот код удалит все цифры из строки:

import re

my_string = "Hello, World! 123"
my_string = re.sub(r'\d', '', my_string)
print(my_string)
Hello, World! 

Регулярное выражение \d соответствует любой цифре. Поэтому метод re.sub() заменяет каждую цифру в my_string пустой строкой.

Вы можете также использовать регулярные выражения, чтобы удалить другие типы символов. Например, чтобы оставить в строке только цифры и буквы, можно воспользоваться регулярным выражением \W . Оно соответствует любому символу, который не является буквой или цифрой.

Вот пример, как вы можете использовать это:

import re 

string = "Hello, World! 123"
string = re.sub(r'\W', '', string)
print(string)
HelloWorld123

join()

Последняя функция Python, с помощью которой мы будем удалять символы из строки — join() .

На вход метод join() принимает итерируемые объекты, которыми являются в том числе и строки, и объединяет их в строку. Обычно этот метод применяется для объединения списка в одну строку, но мы воспользуемся им для удаления символа. Например, удалим из строки все цифры с помощью join() :

my_string = '1czech2, prague3'
numbers = "123456789"

result_string = ''.join([char for char in my_string if char not in numbers])

print(result_string)
czech, prague

В этом примере на основе строки my_string создается список из символов, который содержит все символы, кроме цифр. Затем метод join() объединяет элементов списка в одну строку. В результате получается строка czech, prague , в которой все вхождения цифр удалены.

Заключение

В этой статье мы рассмотрели различные способы удаления символов из строки в языке Python. Выделять один конкретный метод из всех перечисленных не имеет смысла. В зависимости от условий стоящей перед вами задачи и потребностей, разные методы будут демонстрировать разную эффективность. Так, например, метод replace() будет наиболее удобен в простых случаях, а регулярные выражения подойдут для более сложных ситуаций.

forum.farmanager.com

Странно работает выделение, поиском похожих проблем не нашел.

Странность заключается в том, что зажав Shift и зажав стрелку (например вправо), выделяется ~30 символов, после чего выделение снимается и начинается с нового места (~30 символа). Потом выделяется еще ~30 и опять выделении снимается, и так далее. Одно такое выделении занимает примерно одну секунду.
Также, в связи с этим, невозможно зажав Shift и стрелку выделить строку, потом нажать влево. Выделение начинается заново с места курсора.

OS: Windows XP SP3
Far: 1.70 build 2087, из плагинов только Colorer, но его отключение не помогает.
Проблема не связана с постоянными блоками и т.д., проявляется только в FAR, в остальных программах такого нет.

droll

HaRT Moderator Posts: 10871 Joined: Tue 30 Aug, 2005 17:21 Has thanked: 221 times Been thanked: 359 times

Re: Выделение текста

Post by HaRT » Wed 06 Aug, 2008 11:54

droll
Во-первых, надо бы проверить на свежей общедоступной версии, например, 2411+.
Во-вторых, очень похоже, что какая-то внешняя прога гадит во входную очередь событий консольного окна.

Фар есть инструмент, а не нянька. © 2009 DrKnS

HaRT

droll Posts: 2 Joined: Sun 03 Aug, 2008 14:34

Re: Выделение текста

Post by droll » Wed 06 Aug, 2008 13:05

HaRT wrote: Во-вторых, очень похоже, что какая-то внешняя прога гадит во входную очередь событий консольного окна.

Спасибо, именно так, только не прога — а сам ноут посылал E00D каждую секунду.
Сбило с толку что это только в Far происходило.

droll

evs Posts: 1 Joined: Sun 21 Sep, 2014 13:31

Выделение блоков в редакторе

Post by evs » Sun 21 Sep, 2014 13:36

Не могу понять, что изменилось в новых версиях с выделением блоков с в редакторе с помощью клавиш Shift-Arrows. При нажатии Shift-стрелка вправо выделяется один символ, при повторном нажатии этой комбинации, выделяется следующий символ, но выделение с предыдущего символа пропадает. То же самое с выделением строк: возможно выделить только одну строку, потому, что при попытке выделить следующую строку нажатием Shift-стрелка вниз, предыдущее выделение исчезает.

zg zero-gravity Posts: 6038 Joined: Tue 15 Mar, 2005 17:36 Location: riga Been thanked: 185 times Contact:

Re: Выделение блоков в редакторе

Post by zg » Sun 21 Sep, 2014 14:06

Decker Posts: 5 Joined: Sun 06 Dec, 2015 00:00 Been thanked: 1 time

Выделение текста

Post by Decker » Sun 06 Dec, 2015 00:04

Добрый день всем. Аналогичная ситуация на одном из ноутбуков (сборки Far’а пробовал разные и стабильные и night), при попытке выделения текста в редакторе с помощью Shift + стрелки выделение сбрасывается. Т.е. выделяется только определенное количество символов, которые следуют за курсором, т.е. ровно то, что и описывал топикстартер. В связи с чем вопрос — как / чем отследить что посылается в очередь консольного окна и как избавиться от этого? Советы, предложения, комментарии приветствуются . При этом на другом ПК в тех же сборках Far подобная проблема не наблюдается.

Decker

Decker Posts: 5 Joined: Sun 06 Dec, 2015 00:00 Been thanked: 1 time

Выделение текста

Post by Decker » Sun 06 Dec, 2015 00:10

p.s. Заметил интересную особенность, если при выделении использовать Shift + стрелки основной клавиатуры ноутбука — то нормально выделить текст не получается. Однако, если нажать Num Lock и использовать стрелки на дополнительной клавиатуре — все работает. Т.е. Shift + стрелки на доп. клавиатуре работают превосходно. Может быть данную проблему можно как-то исправить программно? Например поставив какой-нибудь дополнительный плагин, или пересобрав один из модулей, чтобы Far игнорировал «лишние сообщения». Единственное надо правда разобраться что именно посылается в окно в моем случае (как, я пока не придумал).

Decker

Maximus5 Posts: 3295 Joined: Sun 11 Nov, 2007 02:03 Been thanked: 10 times Contact:

Выделение текста

Post by Maximus5 » Sun 06 Dec, 2015 00:14

Например, с помощью KeyEvents.

Maximus5

Decker Posts: 5 Joined: Sun 06 Dec, 2015 00:00 Been thanked: 1 time

Выделение текста

Post by Decker » Sun 06 Dec, 2015 00:35

Maximus5 wrote: Например, с помощью KeyEvents.

Спасибо за быстрый ответ, честно говоря не ожидал. Итак, что удалось выяснить. Вот так выглядит нажатие и отпускание стрелки «Вниз»:

02:32:26 KEY_EVENT_RECORD: Dn, 1, Vk="VK_DOWN" [40/0x0028], Scan=0x0050 uChar=[U =' ' (0x0000): A=' ' (0x00)] Ctrl=0x00000140 (casac - EcnS) (Windowed) 02:32:26 KEY_EVENT_RECORD: Up, 1, Vk="VK_DOWN" [40/0x0028], Scan=0x0050 uChar=[U =' ' (0x0000): A=' ' (0x00)] Ctrl=0x00000140 (casac - EcnS) (Windowed)

Здесь все нормально. Аналогичную ситуацию имеем и когда нажимаем стрелку «Внизу» на дополнительной клавиатуре. Однако, при одновременном нажатии Shift + Стрелка «Вниз» на основной клавиатуре в событиях виден какой-то мусор:

02:33:28 KEY_EVENT_RECORD: Dn, 1, Vk="VK_DOWN" [40/0x0028], Scan=0x0050 uChar=[U =' ' (0x0000): A=' ' (0x00)] Ctrl=0x00000150 (caSac - EcnS) (Windowed) 02:33:28 KEY_EVENT_RECORD: Up, 1, Vk="VK_DOWN" [40/0x0028], Scan=0x0050 uChar=[U =' ' (0x0000): A=' ' (0x00)] Ctrl=0x00000150 (caSac - EcnS) (Windowed) 02:33:28 KEY_EVENT_RECORD: Dn, 1, Vk="VK_. " [255/0x00FF], Scan=0x002A uChar=[ U=' ' (0x0000): A=' ' (0x00)] Ctrl=0x00000150 (caSac - EcnS) (Windowed) 02:33:28 KEY_EVENT_RECORD: Up, 1, Vk="VK_SHIFT" [16/0x0010], Scan=0x002A uChar=[ U=' ' (0x0000): A=' ' (0x00)] Ctrl=0x00000040 (casac - ecnS) (Windowed)

Как будто мы нажали и не отпустили Vk=»VK_. » [255/0x00FF]. Видимо на это так и реагирует Far, не давая выделить текст. Теперь назревает другой вопрос, каким образом можно заставить редактор Far’а игнорировать это событие.

p.s. Спасибо за помощь .

Decker

Decker Posts: 5 Joined: Sun 06 Dec, 2015 00:00 Been thanked: 1 time

Выделение текста

Post by Decker » Sun 06 Dec, 2015 00:55

Никогда не думал что буду собирать Far из исходников . однако сейчас ради интереса взял последнюю версию из SVN’а и к моему удивлению все достаточно быстро собралось (отдельное спасибо команде разработчиков за build.bat и сборку в 1 клик), теперь осталось разобраться где начинается разбор очереди сообщений и сделать маленький фикс для игнорирования [255/0x00FF]. Если кто-то подскажет в какую сторону смотреть — буду крайне признателен. До этого исходников Far’а не видел в глаза, поэтому сам я видимо искать буду долго.

Decker

Decker Posts: 5 Joined: Sun 06 Dec, 2015 00:00 Been thanked: 1 time

Выделение текста

Post by Decker » Sun 06 Dec, 2015 01:28

Всё. Разобрался. Возможно кому-то будет полезным. «Корень» проблемы крылся в keyboard.cpp . было:

 if (!rec->Event.KeyEvent.bKeyDown && (CtrlState&(ENHANCED_KEY|NUMLOCK_ON))) return Modif|(KEY_VK_0xFF_BEGIN+ScanCode); return KEY_IDLE; 
 if (!(CtrlState & SHIFT_PRESSED)) < // [+] Decker if (!rec->Event.KeyEvent.bKeyDown && (CtrlState&(ENHANCED_KEY|NUMLOCK_ON))) return Modif|(KEY_VK_0xFF_BEGIN+ScanCode); > return KEY_IDLE; 

Т.е. при нажатом Shift’е мы просто игнорируем поступающее непонятное нажатие. Насколько это решение корректно — другой вопрос, но оно рабочее.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *