#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», от которых нужно избавиться.