从字符串Python中删除括号和内部数字

从字符串Python中删除括号和内部数字,python,Python,我在Python中看到了很多关于如何从字符串中删除括号的示例,但是我没有看到任何允许我从该字符串中删除括号和括号内的数字的示例 例如,假设我有一个字符串,比如“abc[1]”。如何从字符串中删除“[1]”以仅返回“abc” 我尝试了以下方法: stringTest = "abc[1]" stringTestWithoutBrackets = str(stringTest).strip('[]') 但这只输出字符串,而不输出最后一个括号 abc[1 我还尝试使用通配符选项: stringTest

我在Python中看到了很多关于如何从字符串中删除括号的示例,但是我没有看到任何允许我从该字符串中删除括号和括号内的数字的示例

例如,假设我有一个字符串,比如“abc[1]”。如何从字符串中删除“[1]”以仅返回“abc”

我尝试了以下方法:

stringTest = "abc[1]"
stringTestWithoutBrackets = str(stringTest).strip('[]')
但这只输出字符串,而不输出最后一个括号

abc[1

我还尝试使用通配符选项:

stringTest = "abc[1]"
stringTestWithoutBrackets = str(stringTest).strip('[\w+\]')
但这也会输出不带最后一个括号的字符串

abc[1


您可以使用正则表达式,但需要与
re
模块一起使用:

re.sub(r'\[\d+\]', '', stringTest)
如果
[]
部分始终位于字符串的末尾,您也可以通过以下方式进行剥离:

stringTest.rstrip('[0123456789]')

尽管后一个版本可能会超出
[
,如果前面的字符也在剥离列表中。例如在
“abc1[5]”
中,
“1”
也会被剥离。

您可以使用正则表达式,但我认为最简单的方法是使用:

stringTest=“abc[1][2][3]” >>>stringTest.split('[',maxslit=1)[0] “abc”
假设字符串的格式为“text[number]”,并且您只想保留“text”,则可以执行以下操作:

stringTest = "abc[1]"
bracketBegin = stringTest.find('[')
stringTestWithoutBrackets = stringTest[:bracketBegin]

为什么不考虑一下
regex
?@Tomerikoo我正在循环一个XML文档,我需要对每个节点做一些事情。有些节点在文档中出现多次(如它们的名称),因此,
lxml
将节点的名称作为数组返回(这很好)。但是为了做一些我喜欢的事情,我需要删除数组注释。@Adam看起来我们这里有一个。你应该编辑你的帖子来解释你真正的问题(尽可能清楚地用a)。可能使用
split
而不是
rsplit
来处理任意数量的下标,比如
abc[1][2][3]
?@a_guest有趣的一点!正如OP在评论中所说,这是列表下标注释,看起来确实更好。谢谢!@Adam,但请记住,这也是最慢的方法。对于简单的字符串操作,通常最好直接依赖
str
方法。如果您只有一个(或几个)方法下标,
rstrip
将是最快的,因为它只需要为一个字符串分配内存,而不是创建两个字符串和一个元组的
split
。但是如果这与您的用例相关,它还可能从变量名中剥离数字。