python - Python 重新,如何捕捉 12"" / 14""

我需要捕捉这样的模式:

12"" / 14""

"Factory SP1 150 12"" / 14"""

数字会发生变化(始终为 2 位数字),其余数字不会发生变化。

请注意,字符串末尾的双引号是字符串的一部分,而不是括弧。

另请注意,我正在使用 pandas 并使用 .str.extract(pattern)

我的代码:

df = pd.read_csv(r'filename.csv', delimiter = ';', usecols = ["OLD_COLUMN", "OTHER_COLUMNS"], encoding='utf-8', error_bad_lines=False)

pattern = r'(\d{2}""\s*/\s*\d{2}"")'

df["NEW_COLUMN"] = df["OLD_COLUMN"].str.extract(pattern)

我换了组,试图逃避每个角色。我找不到办法。

回答1

您可以使用 r'\d{2}""\s*/\s*\d{2}""' 作为正则表达式:

s = '"Factory SP1 150 12"" / 14"""'
re.findall(r'\d{2}""\s*/\s*\d{2}""', s)

输出:

['12"" / 14""']

小心你的字符串: "Factory SP1 150 12"" / 14""" 相当于: "Factory SP1 150 12" + " / 14" + "" 所以 'Factory SP1 150 12 / 14'

回答2

pattern = '([0-9]+""\s*/\s*[0-9]+"")'

是一个正则表达式,它将与 1351""/1"" 等其他表达式一起匹配。问题是您使用了 r 或原始字符串。它会导致模式中的 \ 被解释为字面上的 \。所以你的原始模式只会匹配像 12\"\" / 14\"\" 这样的字符串

相似文章