Удалить элементы строки питон

How to remove the left part of a string?

I have some simple python code that searches files for a string e.g. path=c:\path , where the c:\path part may vary. The current code is:

def find_path(i_file): lines = open(i_file).readlines() for line in lines: if line.startswith("Path="): return # what to do here in order to get line content after "Path mt24 mb12">
    pythonstring
)" data-controller="se-share-sheet" data-se-share-sheet-title="Share a link to this question" data-se-share-sheet-subtitle="" data-se-share-sheet-post-type="question" data-se-share-sheet-social="facebook twitter devto" data-se-share-sheet-location="1" data-se-share-sheet-license-url="https%3a%2f%2fcreativecommons.org%2flicenses%2fby-sa%2f4.0%2f" data-se-share-sheet-license-name="CC BY-SA 4.0" data-s-popover-placement="bottom-start">Share
)" title="">Improve this question
)">edited Sep 11, 2019 at 23:08
Boris Verkhovskiy
14.5k11 gold badges100 silver badges101 bronze badges
asked Mar 1, 2009 at 15:19
1
    Be aware that you are returning on the first line occurrence within the file that starts with "Path=". Other answers to this post also do. But if the file is something like a DOS batch file you may actually want the last line occurrence from such a file depending if the "batch" or command file isn't filled with conditionals.
    – DevPlayer
    Aug 27, 2016 at 23:29
Add a comment|

21 Answers 21

Reset to default
210

If the string is fixed you can simply use:

if line.startswith("Path =" in line: param, value = line.split(" Path" and value is the rest after the first =.

)" data-controller="se-share-sheet" data-se-share-sheet-title="Share a link to this answer" data-se-share-sheet-subtitle="" data-se-share-sheet-post-type="answer" data-se-share-sheet-social="facebook twitter devto" data-se-share-sheet-location="2" data-se-share-sheet-license-url="https%3a%2f%2fcreativecommons.org%2flicenses%2fby-sa%2f3.0%2f" data-se-share-sheet-license-name="CC BY-SA 3.0" data-s-popover-placement="bottom-start">Share
)" title="">Improve this answer
)">edited Jul 15, 2011 at 19:54
John Zwinck
239k38 gold badges321 silver badges435 bronze badges
answered Mar 1, 2009 at 15:26
7
    5
    +1 for the split method, avoids the slight ugliness of the manual slicing on len(prefix).
    – bobince
    Mar 1, 2009 at 16:38
    1
    But also throws if your input isn't all in the form "something=somethingelse".
    – Dan Olson
    Mar 1, 2009 at 22:17
    1
    That's why I put the condition in front so it's only used if a "=" is in the string. Otherwise you can also test for the length of the result of split() and if it's ==2.
    – MrTopf
    Mar 1, 2009 at 22:33
    8
    Like Dan Olson says split throws an exception if the delimiter is not present. partition is more stable, it also splits a string and always returns a three-element tuple with pre-, delimiter, and post-content (some of which may be '' if the delimiter was not present). Eg, value = line.partition('=').
    – Anders Johansson
    Jan 3, 2013 at 14:21
    1
    Split doesn't throw an exception if the delimited is not present, it returns a list with the whole string. At least under python 2.7
    – Maxim
    Aug 10, 2017 at 11:30
|Show 2 more comments
135

Remove prefix from a string

# . if line.startswith(prefix): return line[len(prefix):]

Split on the first occurrence of the separator via str.partition()

def findvar(filename, varname="Path", sep=" http://docs.python.org/library/configparser.html" rel="noreferrer">ConfigParser 
from ConfigParser import SafeConfigParser config = SafeConfigParser() config.read(filename) # requires section headers to be present path = config.get(section, 'path', raw=1) # case-insensitive, no interpolation 

Источник

Как удалить символ из строки 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)

В этом примере мы хотим удалить из строки символ «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 index-1:
result_string += my_string[i]
print(result_string)

В качестве 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)

Работа этого отрывка кода аналогична предыдущему, за исключением того, что в этот раз мы проверяем, содержит ли 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)

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

Чтобы удалить символы из строки в 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)

Также с помощью срезов можно удалить несколько подряд идущих символов. Например, чтобы удалить символы с индекса 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)

replace()

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

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

print(my_string)

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

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

print(my_string)

Вы также можете использовать цикл 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)

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)

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

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

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

import re 

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

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)

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

Заключение

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

Источник

Читайте также:  Positional args in python
Оцените статью