分割不包括引号的逗号分隔文本
处理带有嵌入引号的逗号分隔文本时,有必要忽略引号内的逗号部分。在 Python 中使用默认的 string.split(",") 方法时会出现此问题。
考虑以下字符串:
"123,test,444,\"don't split, this\",more test,1"
使用默认方法拆分此字符串将产生以下结果结果:
["123", "test", "444", "\"don't split", " this\"", "more test", "1"]
如您所见,引用部分内的逗号不会被忽略。为了解决这个问题,需要使用正则表达式。
str.split(",(?=(?:[^\"]*\"[^\"]*\")*[^\"]*$)")
正则表达式说明:
此正则表达式确保只有引用部分之外的逗号才会被识别为分隔符。
或者,在 Python 中使用 (?x) 修饰符可以将正则表达式分解为多行以提高可读性:
str.split("(?x)\n\ , \n\ (?=\n\ (?: \n\ [^\"]* \n\ \" \n\ [^\"]* \n\ \" \n\ )* \n\ [^\"]* \n\ $ \n\ ) \n")
此代码有效地将输入字符串拆分为一个列表,其中每个元素代表一个子字符串,在任何引用的部分之外用逗号分隔。
以上是如何拆分逗号分隔的文本,同时忽略引号内的逗号?的详细内容。更多信息请关注PHP中文网其他相关文章!