如何从 excel 单元格中的文本字符串中删除数字
How to remove numbers from text strings in excel cells
我有一个 Excel 工作簿,其中包含 header 个单元格,如下所示:
- 生日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)"
我有一个 Excel 工作簿,其中包含 header 个单元格,如下所示:
- 生日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)"