Удаление » n» между строкой в многострочной строке в python

#python #python-3.x #string #replace #re

#python #python-3.x #строка #заменить #python-re

Вопрос:

Я хочу удалить » n» из intext в python. Я пробовал много способов, но все они не работали. Текст должен быть примерно таким:

 string='''# Initializing Function named main()
def main () :
    str1 = None
    str2 = None
    age=16
    str1=str(input())
    str2=str(input())
    print("Entered Name: {}n".format(str1))
    print("Entered Website:{}".format(str2))
# Calling the main Function
main()'''
 

В строке «print(«Введенное имя: {}n».format(str1))» есть n, который мне нужно удалить, не удаляя другие n из многострочной строки. Спасибо!

Комментарии:

1. Что вы подразумеваете под «без удаления другого n из многострочной строки»? Пожалуйста, будьте более понятны

2. @SamyakJain Мне нужно удалить «n» в строке «print(«Введенное имя: {} n».format(str1))», не удаляя другие n. Поскольку «string» является многострочной строкой, она содержит n после каждой строки

Ответ №1:

Проблема в том, что n интерпретируется ''' строкой, но вы хотите, чтобы она оставалась на месте и обрабатывалась внутренней " строкой.

Самое простое решение — использовать r-строку для внешней строки; обратите внимание r''' на первую строку:

 string=r'''# Initializing Function named main()
def main () :
    str1 = None
    str2 = None
    age=16
    str1=str(input())
    str2=str(input())
    print("Entered Name: {}n".format(str1))
    print("Entered Website:{}".format(str2))
# Calling the main Function
main()'''
 

С этим изменением внутренний n должен работать правильно, и вам, вероятно, больше не нужно будет его удалять.

Комментарии:

1. Спасибо за ответ. можете ли вы сказать мне, как преобразовать многострочную строку в необработанную строку без использования «r» впереди?

2. @Programming_Hub: Вы не можете. Это r то, что делает его необработанной строкой; без r этого она не является необработанной по определению. Вы могли бы дважды экранировать (или, точнее, экранировать escape on) n , чтобы сделать это \n и получить тот же эффект с необработанной строкой.

3. если я заменю n на \n, то структура полной строки изменится путем замены всех остальных n .

4. @YashMakan: Нет, это не так. Этот сингл \n будет буквальной обратной косой чертой, за которой следует буква n , а все остальные буквальные новые строки останутся простыми новыми строками. Вам нужно будет заменить необработанную строку или аналогично экранированную строку поиска .replace('\n', ...) или .replace(r'n', ...) сопоставить, вот и все.

5. Как только у вас есть литерал n в строке, вы, вероятно, все равно не захотите заменять — вы будете запускать его через какую-либо форму Python, которая будет обрабатывать соответствующим n образом.

Ответ №2:

Объявите многострочную строку как необработанную строку, чтобы n она не экранировалась, затем замените ее (используя другую необработанную строку, чтобы она снова не экранировалась):

 # r before the ''' makes it a raw string
string=r'''# Initializing Function named main()
def main () :
    str1 = None
    str2 = None
    age=16
    str1=str(input())
    str2=str(input())
    print("Entered Name: {}n".format(str1))
    print("Entered Website:{}".format(str2))
# Calling the main Function
main()'''
string = string.replace(r'n', '')
 

Комментарии:

1. Спасибо за ответ. можете ли вы сказать мне, как преобразовать многострочную строку в необработанную строку без использования «r» впереди?

2. @YashMakan — Преобразования нет; «r» впереди — это скорее директива синтаксического анализа, указывающая анализатору, как преобразовать текст в код, и результирующая строка не отличается от необработанной строки. r'abc' точно так же, как 'abc' , в той степени, в которой во многих случаях r'abc' is 'abc' может оцениваться True .

Ответ №3:

 i = string.find('{}\n') #is the position of the '{}n'
string = string[:i 2]   string[i 5 :] #should do the trick
 

Комментарии:

1. Спасибо за ответ, но он будет работать только для этой строки, а не для любой другой строки.

2. Я бы предложил попробовать применить мой подход: найти позицию n и удалить ее «вручную», потому что вам может потребоваться использовать многолинейный комментарий с форматом, и вы не сможете использовать метод r»‘ «‘. Я бы использовал это только в том случае, если бы было много » n», от которых нужно избавиться.