我需要捕捉这样的模式:
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\"\"
这样的字符串