Перейти к содержимому

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

  • автор:

Как удалить все символы из строки кроме цифр и точек? [закрыт]

Если уж оставлять и запятую (где Евро), то я бы предложил так:

import re def func(x): return (re.findall(r'-[0-9.,]+|[0-9.,]+', x)) a = "¥ 362.25 52,50€ 435 uhdja-43-7.3 47432--38 fhhwref " print (func(a)) #a = ['362.25', '52,50', '435', '-43', '-7.3', '47432', '-38'] 

Отслеживать
ответ дан 28 авг 2022 в 16:46
16 3 3 бронзовых знака

Я проанализировал данную задачу и немного интерпретировал, мой код позволяет найти все числа в строке, в том числе отрицательные и вещественные, таким образом он отвечает и на ваш запрос

a = input() # a = "¥ 362.25 52,50€ 435 uhdja-43-7.3 47432--38 fhhwref " def isnum(num): key = "1234567890" num = str(num) if num in key and num != "": return True return False def find_num(text, float_sep=None, unary_sing=None): text += " " # Увеличивает длину исходной строки на 1 if unary_sing is None: # Установка стандартных значений unary_sing = ["-"] if float_sep is None: float_sep = [",", "."] nums = [] # Объявление списка для чисел number = "" last_sym = "" flag_float = False flag_unary = False for sym in text: if isnum(sym): # Проверка символа на число number += last_sym last_sym = sym elif sym in float_sep and \ not flag_float and \ isnum(last_sym): # Проверка на вхождение в список, проверка на единоличность, проверка на число прошлого символа number += last_sym last_sym = sym flag_float = True elif sym in unary_sing and \ not flag_unary and\ number == "": # Проверка на вхождение в список, проверка на единоличность, проверка на первое число last_sym = sym flag_unary = True elif number: # Если не одно условие выше не выполнилось, то проверяет было ли найдено хоть что-то if isnum(last_sym): # Проверяет последний символ на число, помогает избежать потери последнего символа number += last_sym nums.append(number) number = "" # Обнуление всех параметров flag_float = False flag_unary = False last_sym = "" if sym in unary_sing: # Частный случай если символ начинает новое число last_sym = sym return nums g = find_num(a) print(g) # При a = "¥ 362.25 52,50€ 435 uhdja-43-7.3 47432--38 fhhwref " # Выведет: ['362.25', '52,50', '435', '-43', '-7.3', '47432', '-38'] 

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

Сначала выведите третий символ этой строки.

Во второй строке выведите предпоследний символ этой строки.

В третьей строке выведите первые пять символов этой строки.

В четвертой строке выведите всю строку, кроме последних двух символов.

В пятой строке выведите все символы с четными индексами (считая, что индексация начинается с 0, поэтому символы выводятся начиная с первого).

В шестой строке выведите все символы с нечетными индексами, то есть начиная со второго символа строки.

В седьмой строке выведите все символы в обратном порядке.

В восьмой строке выведите все символы строки через один в обратном порядке, начиная с последнего.

Абракадабра
р
р
Абрак
Абракадаб
Аркдба
бааар
арбадакарбА
абдкрА
11

B: В обратном порядке

Дана строка. Выведите её символы в обратном порядке, по одном символу в строке.

Python
n
o
h
t
y
P

C: Количество слов

Hello world

D: Замена подстроки

one+one=2

E: Удаление символа

Bilbo.Baggins@bagend.hobbiton.shire.me
Bilbo.Bagginsbagend.hobbiton.shire.me

F: Две половинки

Дана строка. Разрежьте ее на две равные части (если длина строки — четная, а если длина строки нечетная, то длина первой части должна быть на один символ больше). Переставьте эти две части местами.

Результат запишите в отдельную переменную и выведите на экран следующим образом: print(«*» + s + «*»)

Решение, в котором ответ выводится по-другому, приниматься не будет.

Hello
*loHel*

G: Переставить два слова

Дана строка, состоящая ровно из двух слов, разделенных пробелом. Переставьте эти слова местами.

При решении этой задачи нельзя пользоваться циклами и инструкцией if .

Hello world
*world Hello*

H: Дробь

Дана строка, в которой записана рациональная дробь в виде m/n , где m и n — целые неотрицательные числа, n не равно 0. Вычислите значение этой дроби и выведите его в виде действительного числа.

179/57
3.1403508771929824

I: Удаление слова

Текст состоит из слов, разделённых пробелами. В тексте как минимум три слова. Удалите из текста второе слово.

Решение выведите так же, как в задаче «Две половинки».

In the hole in the ground there lived a hobbit
*In hole in the ground there lived a hobbit*

J: Повторение слова

Текст состоит из слов, разделённых пробелами. В тексте как минимум два слова. Продублируйте второе слово в тексте.

В этой задаче нельзя использовать методы count и replace. Также желательно использовать метод find с двумя параметрами, вместо вызова метода find к срезу.

In the hole in the ground there lived a hobbit
*In the the hole in the ground there lived a hobbit*
Hello world
*Hello world world*

K: Разворот слова

Текст состоит из слов, разделённых пробелами. В тексте как минимум одно слово. Переставьте буквы второго слова (если оно есть) в обратном порядке.

Решение выведите так же, как в задаче «Две половинки».

In the hole in the ground there lived a hobbit
*In eht hole in the ground there lived a hobbit*
Hello
*Hello*

L: Футбольный матч

На табло стадиона в конце игры горит надпись:

Название 1-Название 2 A:B

где Название 1 и Название 2 — названия двух команд, а A:B — счёт матча.

Определите, какая команда победила.

Названия команд могут содержать любые символы (буквы, цифры, знаки), кроме «-» и «:». Символы «-» и «:» содержатся в строке ровно по одному разу.

Программа должна вывести название победившей команды, а если была ничья, то слово draw .

Арсенал (Тула)-Спартак (Москва) 3:0
*Арсенал (Тула)*

M: Вставка символов

Дана строка. Получите новую строку, вставив между каждыми соседними символами исходной строки символ «.». Выведите полученную строку.

В этой задаче можно использовать цикл, но можно обойтись и без него (нужно догадаться самому).

Python
*P.y.t.h.o.n*

N: Удалить каждый третий символ

Дана строка. Удалите из нее все символы, чьи индексы делятся на 3.

Решение выведите так же, как в задаче «Две половинки».

Python
*yton*

O: Метод бутерброда

Секретное агентство решило для шифрования переписки своих сотрудников использовать «метод бутерброда». Сначала буквы слова нумеруются в таком порядке: первая буква получает номер 1, последняя буква — номер 2, вторая – номер 3, предпоследняя – номер 4, потом третья … и так для всех букв (см. рисунок). Затем все буквы записываются в шифр в порядке своих номеров. Например, слово «sandwich» зашифруется в «shacnidw».

К сожалению, программист агентства, написал только программу шифрования и уволился. И теперь агенты не могут понять, что же они написали друг другу. Помогите им.

Вводится слово, зашифрованное методом бутерброда. Выведите расшифрованное слово.

Решение выведите так же, как в задаче «Две половинки».

Решите эту задачу при помощи срезов, не используя циклы.

Aabrrbaacda
*Abracadabra*

P: Скрытие адреса email

Для защиты от ботов, собирающих с web-страниц адреса электронной почты для рассылки спама, используются методы скрытия адреса электронной почты. Рассмотрим самый простой метод скрытия: в адресе электронной почты символы «.» меняются на «(dot)», символ «@» меняется на «(at)».

Дана строка текста, в ней есть один адрес электронной почты (он содержит один символ «@»). В адресе электронной почты (считайте, что адрес — это слово, отделённое пробелами) выполните указанные замены, в остальных местах замены производить не нужно.

Bilbo.Baggins@bagend.hobbiton.shire.me - valid email.
*Bilbo(dot)Baggins(at)bagend(dot)hobbiton(dot)shire(dot)me - valid email.*

Q: Смайлики

Напишите программу, которая посчитает количество смайликов в заданном тексте.

  • первым символом является либо ; (точка с запятой) либо : (двоеточие) ровно один раз
  • далее может идти символ – (минус) сколько угодно раз (в том числе символ минус может идти ноль раз)
  • в конце обязательно идет некоторое количество (не меньше одной) одинаковых скобок из следующего набора: ( , ) , [ , ] .
  • внутри смайлика не может встречаться никаких других символов.

Например, нижеприведенные последовательности являются смайликами:

в то время как эти последовательности смайликами не являются (хотя некоторые из них содержат смайлики внутри):

В этой задаче надо будет посчитать количество смайликов, содержащихся в данной строке.

Выведите одно число — количество смайликов, которые встречаются в тексте.

Эту задачу можно решить в одну строчку.

Удаление слова из строки Python по фрагменту или шаблону

Строка — это неизменяемый тип в Python, следовательно для каких то изменений, ее необходимо преобразовать в изменяемый тип, например в список. После необходимых изменений , преобразовать список снова в строку.

# исходная строка >>> line = 'остались строки и перенос слова перекресток переоборудование' # делим строку на слова >>> words = line.split(' ') # фрагмент, по которому будем удалять слова >>> fragment = 'пере' # новый список оставшихся слов >>> new_words = [] >>> for word in words: . if fragment not in word: . new_words.append(word) . >>> new_words # ['остались', 'строки', 'и', 'слова'] # собираем строку используя в качестве разделителя пробел >>> ' '.join(new_words) # 'остались строки и слова 

Для удаления или изменения строк по шаблону необходимо использовать регулярные выражения и функцию re.sub() . Например удалим все цифры из строки или оставим только цифры.

# исходная строка >>> line = '156 строк и 13 переносов слов в 10 предложениях' >>> import re # удаление цифр из строки >>> re.sub(r'\d+\s?', '', line).strip() # 'строк и переносов слов в предложениях' # удаление слов из строки >>> re.sub(r'[а-я]+\s?', '', line).strip() # '156 13 10' 

Удаление повторов слов в строке.

Для удаления повторов слов в строке так же необходимо воспользоваться регулярными выражениями и модулем re . В частности будем использовать группы с захватом и обратные ссылки регулярного выражения..

# исходная строка >>> line = 'Мама мыла мыла раму' >>> import re >>> re.sub(r'(\b\w+)\s+\1', r'\1', line) # 'Мама мыла раму' 
  • ОБЗОРНАЯ СТРАНИЦА РАЗДЕЛА
  • Преобразование строки в число
  • Строку в список, кортеж или множество символов
  • Одинарные, двойные и тройные кавычки в строке Python
  • Вывод специальных символов в строке Python «как есть»
  • Объединение и повторение строк
  • Индексирование строк
  • Использование срезов строк
  • Cрез строки Python от заданного символа/знака до конца строки
  • Создание макета для печати базовыми методами строк
  • Способы форматирования текстовых строк
  • Подсчет повторений слов в тексте, деление строки на список слов
  • Удаление слова из строки Python по фрагменту или шаблону
  • Удаление пунктуации из строки
  • Деление строки по заглавным буквам
  • Создание отчетов и писем по шаблонам

Удаление символов из строки

K&R (61-62). Приводится пример функции squeeze , которая удаляет все символы c из строки s .

Ниже представлен полный код программы с использованием этой функции. А также ответ к упражнению 2.4, где предлагается написать функцию, удаляющую из строки s1 все символы, встречающиеся в строке s2 .

Алгоритм удаления символа из строки можно описать так:

  • Пока не будет достигнут конец строки,
  • если очередной символ строки не равен символу для удаления,
  • записать очередной символ по месту индекса j , после этого последний увеличить на единицу.

Другими словами, алгоритм сводится к тому, что символ по индексу i затирается следующим символом, если он совпал с символом для удаления; т.к запись идет по счетчику j , а он увеличивается лишь тогда, когда символы из строки и для удаления не совпадают.

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

Удаление всех символов c из строки

#include #define MAX 100 void squeeze (char s[], int c); main ()  char str0[MAX]; int i, c; for (i = 0; (c = getchar()) != '\n'; i++) str0[i] = c; str0[i] = '\0'; c = getchar(); squeeze (str0, c); printf("%s\n", str0); > void squeeze (char s[], int c)  int i, j; for (i = j = 0; s[i] != '\0'; i++) if (s[i] != c) s[j++] = s[i]; s[j] = '\0'; >

Удаление всех символов, встречающихся в строке s2 , из строки s1

#include #define MAX 100 #define DEL 10 void squeeze (char s[], char s1[]); void written (char s[]); main()  char str[MAX]; char str1[DEL]; written (str); written (str1); squeeze (str, str1); printf("%s\n", str); > void written (char s[100])  int i, c; i = 0; while ((c = getchar()) != '\n')  s[i] = c; ++i; > s[i] = '\0'; > void squeeze (char s[], char s2[])  int k, i, j; for (k = 0; s2[k] != '\0'; k++)  for (i = j = 0; s[i] != '\0'; i++) if (s[i] != s2[k]) s[j++] = s[i]; s[j] = '\0'; > >

Примечание. Во второй программе запись символов в строку выделена в отдельную функцию, т.к. надо записать две строки. Иначе пришлось бы дублировать код.

X Скрыть Наверх

Решение задач на языке C

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

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