问题描述
- 生日 645(1995 年之前)
- 生日(1995 年后)99
...
...
我想删除那些单元格中的所有数字,除了那些需要在那里的数字。在上面的例子中,除了 1995 之外,这些单元格中的任何其他数字都应该被删除。
有什么办法可以做这样的事情吗?比如在Python中定义一个函数?
解决方法
根据上面的评论,假设括号定义良好,您可以使用此函数删除所有未嵌套在括号中的数字。
def remove_nums(string):
depth = 0
res = []
for char in string:
if char.isdigit() and depth == 0:
continue
elif char == '(':
depth += 1
elif char == ')':
depth -= 1
res.append(char)
string = ''.join(res)
# remove double spaces
while ' ' in string:
string = string.replace(' ',' ')
return string
if __name__ == "__main__":
strings = ["birthday 645 (before 1995)","birthday (after 1995) 99"]
for string in strings:
print(string+':',remove_nums(string))
In: "birthday 645 (before 1995)"
Out: "birthday (before 1995)"
In: "birthday (after 1995) 99"
Out: "birthday (after 1995)"