Python如何移除字符串指定前缀且不删除列表元素中的'm'?
解决方法
你的问题核心是没利用好输入字符串的分隔规则,直接用正则替换反而破坏了有用的分隔信息。输入里的各个字段是用+++$+++明确分隔的,直接拆分比正则替换更简单可靠:
基础实现(输出字符串格式的分类)
def extract_categories(line: str): # 先去掉字符串首尾的双引号 cleaned_line = line.strip('"') # 用指定分隔符拆分字符串 parts = cleaned_line.split('+++$+++') # 取最后一段内容,去掉前后多余空格 categories = parts[-1].strip() print(categories)
进阶实现(输出实际的Python列表对象)
如果需要把结果转换成可直接操作的列表,用ast.literal_eval解析字符串:
import ast def extract_categories(line: str): cleaned_line = line.strip('"') parts = cleaned_line.split('+++$+++') categories_str = parts[-1].strip() # 将字符串形式的列表转为实际列表 categories_list = ast.literal_eval(categories_str) print(categories_list)
为什么原来的方法不行?
你用的re.sub('[ +++$+++]', '', line)是把方括号里的单个字符(空格、+、$)全部替换为空,导致前几个字段的内容被强行合并成了m448hrs.19826.9022289,和后面的分类列表连在一起。这种正则写法完全误解了分隔符的结构,因为+++$+++是一个整体分隔符,不是单个字符的集合。
内容的提问来源于stack exchange,提问作者moon knight
相关产品推荐
相关产品推荐

