如何在逗号上拆分一行,忽略引号中的逗号?

2024-09-30 20:16:51 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个文件,有很多行,如下所示:

1,50,"asasd",25
2,51,"apa,asdfi",26
.....
.....

如何通过逗号跳过双引号内字符串内的逗号来分隔第二行?在

我需要第二行的结果为:

^{pr2}$

目前我正在尝试:

x = line.split(',')

结果是:

['2','51','"apa','asdfi"','26']

Tags: 文件字符串linesplit逗号双引号apapr2
3条回答

您可以尝试以下代码:

line = '2,51,"apa,asdfi",26'
result = line.split(",")

length = len(result)
for i in range(length):
    if '"' in result[i]:
        result[i] += "," + result[i+1]
        result.remove(result[i+1])
        break

length = len(result)
for i in range(length):
    if result[i].isdigit():
        result[i] = int(result[i])

print(result)

^{pr2}$

正如在评论中所说的,试着把你的文件读成.csv,它会很好地处理字符串中的coma。 如果您使用它有困难,您可以阅读文档https://docs.python.org/2/library/csv.html,或者查看其中的一些示例https://dzone.com/articles/python-101-reading-and-writing

import csv

with open(file.csv,'r') as f:
    spamreader = csv.reader(f,delimiter=",")
    for row in spamreader:
        # a row is a list containing all elements in a line
        print row

结果:

^{pr2}$

也可以使用re.findall提取它们:

>>> s = '2,51,"apa,asdfi",26'
>>> 
>>> re.findall(r'(\d+|".*")', s)
['2', '51', '"apa,asdfi"', '26']

尽管我推荐dup中提到的方法

相关问题 更多 >