删除第一个和最后一个特定符号

2024-10-04 07:37:17 发布

您现在位置:Python中文网/ 问答频道 /正文

如何从输入文本中删除第一个和最后一个“I”?第1个变体删除最后一个字母的文本和副本:

Entered TexEntered Text
          ^           ^

第二种变体不起作用。你知道吗

代码:

txt4 = input("Enter text: ")
txt4 = txt4.swapcase()
print(txt4)
x = "I" or "i"
x1 = txt4.find(x)
x2 = txt4.rfind(x)
if [x1, x2] == -1:
    print("Letter \"i\" not found!")
else:
    #txt4 = txt4.replace(txt4[0:(x1+1)], "", 1) #]
    #txt4 = txt4.replace(txt4[(x2):0], "", 1)   #]-2nd variant
    #txt4x1 = txt4[:(x1+1)] + txt4[(x2):]       #]
    txt4x1 = txt4[0:x1]+txt4[(x1+1):]
    txt4x1 = txt4[0:x2]+txt4[(x2+1):]
    print(txt4x1)

Tags: 代码text文本input字母副本变体replace
2条回答

可以使用正则表达式:

import re
regex = re.compile('i', flags=re.IGNORECASE)
txt = input("Enter text: ")
# re.sub() always searches from left, so we reverse txt using slice [::-1]
# to find the last match. Then we flip it again.
txt = regex.sub('', txt[::-1], 1)
txt = regex.sub('', txt[::-1], 1)
print(txt)

另一种更简单的方法。你知道吗

txt = input("Enter text: ")
for direction in 'from right', 'from left':  # do it twice
     txt = re.sub('[iI]', '', txt[::-1], count=1)
print(txt)

正如在注释中提到的,您正试图对列表使用or==,但它们在Python中根本不起作用。你知道吗

你需要逐个检查每个字符。你知道吗

swappedCase = input("Enter text: ").swapcase()
print(swappedCase)
letters = {"I", "i"}
leftPositions = {swappedCase.find(letter) for letter in letters}
leftPos = min((position for position in leftPositions if position > -1), default=-1)
rightPos = max(swappedCase.rfind(letter) for letter in letters)
if leftPos > -1 or rightPos > -1:
    altered = swappedCase
    if leftPos > -1:
        altered = altered[:leftPos]+txt4[leftPos+1:]
    if rightPos > -1:
        altered = altered[:rightPos]+txt4[rightPos+1:]
    print(altered)
else:
    print("Letter \"i\" not found!")

代替"I" or "i"(它总是返回"I",因为它是第一个True值),我们对每个值(从一个集合中)进行find()rfind(),然后找到不是-1的最小值和最大值来找到最左边和最右边的匹配项,然后我们可以进行替换,大致与您之前所做的一样。你知道吗

相关问题 更多 >