如何在 python 中使用正则表达式从括号中删除数字和文本?
How to remove both number and text from a parenthesis using regrex in python?
在下面的文字中,我想删除括号内的所有内容,包括数字和字符串。我使用以下语法,但得到的结果是 22701 而不是 2270。仅使用 re.sub 显示 2270 的方法是什么?谢谢
import regex as re
import numpy as np
import pandas as pd
text = "2270 (1st xyz)"
text_new = re.sub(r"[a-zA-Z()\s]","",text)
text_new
文本是否始终遵循相同的模式?尝试:
import re
import numpy as np
import pandas as pd
text = "2270 (1st xyz)"
text_new = re.sub(r"\s\([^)]*\)","",text)
print(text_new)
输出:
2270
只需使用正则表达式模式 \(.*?\)
:
import re
text = "2270 (1st xyz)"
text_new = re.sub("\(.*?\)", "", text)
print(text_new)
输出:
2270
模式说明\(.*?\)
:
- 每个括号后面的
\
是告诉re
把括号当作一个普通字符,因为它们在re
. 中默认是特殊字符
.
匹配除换行符以外的任何字符。
*
匹配在 *
之前指定的模式的零次或多次出现。
?
告诉 re 匹配尽可能少的文本,从而使它成为 non-greedy.
注意输出中的尾随 space。要删除它,只需将它添加到模式中:
import re
text = "2270 (1st xyz)"
text_new = re.sub(" \(.*?\)", "", text)
print(text_new)
输出:
2270
在下面的文字中,我想删除括号内的所有内容,包括数字和字符串。我使用以下语法,但得到的结果是 22701 而不是 2270。仅使用 re.sub 显示 2270 的方法是什么?谢谢
import regex as re
import numpy as np
import pandas as pd
text = "2270 (1st xyz)"
text_new = re.sub(r"[a-zA-Z()\s]","",text)
text_new
文本是否始终遵循相同的模式?尝试:
import re
import numpy as np
import pandas as pd
text = "2270 (1st xyz)"
text_new = re.sub(r"\s\([^)]*\)","",text)
print(text_new)
输出:
2270
只需使用正则表达式模式 \(.*?\)
:
import re
text = "2270 (1st xyz)"
text_new = re.sub("\(.*?\)", "", text)
print(text_new)
输出:
2270
模式说明\(.*?\)
:
- 每个括号后面的
\
是告诉re
把括号当作一个普通字符,因为它们在re
. 中默认是特殊字符
.
匹配除换行符以外的任何字符。*
匹配在*
之前指定的模式的零次或多次出现。?
告诉 re 匹配尽可能少的文本,从而使它成为 non-greedy.
注意输出中的尾随 space。要删除它,只需将它添加到模式中:
import re
text = "2270 (1st xyz)"
text_new = re.sub(" \(.*?\)", "", text)
print(text_new)
输出:
2270