【问题标题】:delete characters in a string from begining to ']' character删除字符串中从开头到 ']' 字符的字符
【发布时间】:2021-10-01 16:42:49
【问题描述】:

删除直到并包括']'的字符

a="[12] hi how are you [1]" 
b="[13][14] hello" 

预期输出:

a="hi how are you [1]"

b=" hello"  

【问题讨论】:

  • 您的意思是:a = ' '.join(a.split()[1:])
  • 您可以使用rindex() 查找字符的最右侧索引。然后你可以用它切片。例如:a[a.rindex(']')+1:].strip()

标签: python string character


【解决方案1】:

你可以使用正则表达式来实现这个

import re

txt = "[12] hi how are you" 
x = re.sub("\[[0-9]+\]\s*", "", txt)
print(x)

【讨论】:

  • 成功了。 x = re.sub("[[0-9]+]\s?", "", txt) 你能澄清一下
  • 子函数用指定的替换替换匹配的文本模式。在正则表达式中,尖括号具有特殊含义。为了匹配尖括号,我需要在模式 [0-9] 匹配任何数字 + 允许匹配任何数字时使用尾随斜杠 \[ ` ]` 对它们进行转义。 \s 匹配空格。 * 使空间可选。所以它将匹配零个或多个空格。
  • 请接受我的回答:)
  • 如果输入是“[1] 他的卷号是 [1234]”,我希望输出为“他的卷号是 [1234]”,但它会删除 [] 中的所有内容,结果是“他的卷号是“
  • 可以使用第三个参数限制替换:x = re.sub("[[0-9]+]\s*", "", txt, 1)
【解决方案2】:

您可以使用rindex():

def doIt(a):
    if "]" in a:
        x = a.rindex("]")
        a = a[x + 1 :].strip()
    return a

让我们测试一下:

a = "[12] hi how are you"
b = "[13][14] hello"
c = "kahbscdkashju asjhd bkaisd b dab bui"
print(doIt(a))
print(doIt(b))
print(doIt(c))

输出:

hi how are you
hello
kahbscdkashju asjhd bkaisd b dab bui

您也可以编写自定义方法而不使用任何内置的字符串方法。

def doIt(a):
    ans = []
    for i in range(len(a) - 1, -1, -1):
        if a[i] == "]":
            break
        ans.insert(0, a[i])
    return "".join(ans).strip()

【讨论】:

  • 如果输入是“[1] his roll no is [1234]”,我希望输出为“his roll no is [1234]”,但它会删除 ']' 之前的所有内容,结果是" "
猜你喜欢
  • 2015-01-28
  • 1970-01-01
  • 2015-02-03
  • 1970-01-01
  • 1970-01-01
  • 2019-11-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多