python - 用双引号括起来时忽略逗号

标签 python string split

我想扩展下面的代码,以便它可以使用双引号。例如,字符串 '303,"Candy, Original",45,19' 应该返回 [303,"Candy, Original",45,19]。请帮忙。谢谢。

def parse(s):
    #If string can be parsed as integer, return integer
    try:
        num = int(s)
        return num
    except:
        pass
    #Else return string
    return s

data=[parse(x) for x in myString.split(",")]

最佳答案

csv 模块可以很好地处理引号。您可能想尝试围绕它构建一个解析器。

import csv
from io import StringIO

def to_numeric(x):
    try:
        return int(x)
    except ValueError:
        pass
    try:
        return float(x)
    except ValueError:
        pass
    return x

def parse_line(s):
    f = StringIO(s)
    f.seek(0)
    reader = csv.reader(f)
    out = next(reader)
    return [to_numeric(x) for x in out]

s = '303,"Candy, Original",45,19'
parse_line(s)
# returns:
[303, 'Candy, Original', 45, 19]

关于python - 用双引号括起来时忽略逗号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56370314/

相关文章:

javascript - 计算字符串中的大小写字符

java - java中的爆炸函数与PHP中的爆炸函数一样

iframe 的属性 src 的 javascript split()?

python - 为什么在 Windows 计算机上使用 PyCharm 时无法使用基于 Linux 的 Python 解释器?

javascript - 代码的技术名称不属于任何功能

python - 亚马逊 AWS - S3 到 ElasticSearch(Python Lambda)

c++ - 将字符串参数传递给 fstream.open 时出错

python - 在 Scrapy 项目中使用 Django 的模型(在管道中)

Java:在两个不同的点将一个字符串拆分为 3 个部分

c++ - 拆分没有拆分条的窗口