如何使用Python re模块提取指定字符之间的文本内容?
错误原因
你写的正则表达式和实际文本结构完全不匹配:
- 正则里额外加了
\(\[规则,会匹配([这两个字符,但实际文本中spent_transaction_hash'后面紧跟的是:和单引号包裹的哈希值,不存在这两个字符,所以完全匹配不到内容,返回空列表。 - 你设定的结束规则
'\]也和实际结构不符,哈希值的结束标识是闭合的单引号,不需要匹配方括号。
解决方法
方法1:修正正则直接提取(简单快捷)
匹配spent_transaction_hash': '到下一个单引号之间的内容即可,有两种实现方式:
- 修正你的原有循环代码:
import re my_list = [] for row in df['column']: value = re.findall(r"spent_transaction_hash': '([^']+)'", row) my_list.append(value) df['hash_list'] = my_list
- 更高效的pandas向量化写法,无需手动循环:
df['hash_list'] = df['column'].str.findall(r"spent_transaction_hash': '([^']+)'")
方法2:转成Python对象再提取(更稳妥,避免特殊字符匹配出错)
你的文本本身就是类列表字典的序列化结构,转成原生Python对象再取字段更可靠:
import ast def extract_hash(row_str): # 处理Decimal语法,避免解析失败 cleaned_str = row_str.replace("Decimal(", "").replace(")", "") data = ast.literal_eval(cleaned_str) return [item['spent_transaction_hash'] for item in data] df['hash_list'] = df['column'].apply(extract_hash)
内容的提问来源于stack exchange,提问作者user16599218
相关产品推荐
相关产品推荐

