1

我是 Python 新手,很喜欢它。但是,我有一个问题,希望有人可以提供帮助。

我有一串用逗号分隔的值,并希望使用循环依次单独处理每个值。

例如

字符串 = '1,2,3,4,5,6,'

我想取第一个值“1”并在继续下一个值之前对其进行处理。

4

1 回答 1

3

在上述情况下,您可以使用该split方法将字符串用逗号分隔,然后遍历结果列表:

In [1]: s = '1,2,3,4,5,6,'

In [2]: s.split(',')
Out[2]: ['1', '2', '3', '4', '5', '6', '']

In [3]: for i in s.split(','):
   ...:     if i:
   ...:         print i
   ...:         
   ...:         
1
2
3
4
5
6

split返回一个列表,所以我们在这里做的是遍历结果列表,然后检查该字段是否为空;它不处理。我们进行此检查是因为您的字符串以 a 结尾,,如您所见,它返回一个空字符串。另请注意,这会拆分所有逗号 - 不仅仅是那些分隔值的逗号。

对于上述情况,这应该没问题,但如果您想要对 CSV 信息进行更高级的处理,该csv模块提供了许多选项。例如:

In [1]: import csv

In [2]: s = '1,2,3,"four, five",6'

In [3]: for item in csv.reader([s]):
   ...:     print item
   ...:     
   ...:     
['1', '2', '3', 'four, five', '6']

这里我们使用csv模块读取字符串,item返回的是逗号分隔的字符串,但特殊"four, five"值仍视为一个值。但是请注意,在单个字符串的情况下,这将返回由逗号分隔的字符串元素组成的单个列表。正如@JonClements 指出的那样,遍历元素本身的一种干净方法是调用nexton csv.reader([s]),它将返回列表本身:

In [1]: import csv

In [2]: s = '1,2,3,"four, five",6'

In [3]: for item in next(csv.reader([s])):
   ...:     print item
   ...:     
   ...:     
1
2
3
four, five
6
于 2012-12-16T18:47:08.347 回答