如何移除数组字符串元素中换行符分隔的第二个数值
解决方案
这个需求完全可以用正则实现,也可以用更简单的字符串拆分拼接方法实现,两种方案如下:
正则实现方案
匹配逻辑为定位字符串开头到第二个换行符之间的第二个数值,直接删除该部分内容即可,代码示例:
import re line = ['1.60\n2.50\n2.15', '1.80\n2.20\n1.90'] # 正则替换处理 result = [re.sub(r'^(\d+\.\d+)\n\d+\.\d+\n', r'\1\n', item) for item in line] print(result) # 输出:['1.60\n2.15', '1.80\n1.90']
正则规则说明:
^(\d+\.\d+):匹配字符串开头的第一个数值,存入第一个捕获组\n\d+\.\d+\n:匹配第一个换行符、第二个数值、第二个换行符- 替换时仅保留第一个捕获组加换行,即可剔除第二个数值的内容
如果你的数值格式不固定(比如存在整数、负数等情况),可以用更通用的正则写法:
result = [re.sub(r'^([^\n]+)\n[^\n]+\n', r'\1\n', item) for item in line]
[^\n]+会匹配所有非换行符的内容,不受数值格式限制。
字符串拆分实现(split方法可行版本)
之前用split方法没成功大概率是拼接逻辑处理有误,正确写法如下:
line = ['1.60\n2.50\n2.15', '1.80\n2.20\n1.90'] result = ['\n'.join(item.split('\n')[::2]) for item in line]
按换行拆分每个字符串会得到长度为3的列表,[::2]取索引为0、2的元素(也就是第一个和第三个数值),再用换行符拼接即可得到目标结果。
内容的提问来源于stack exchange,提问作者MareS992
相关产品推荐
相关产品推荐

