我是 Python 新手,很喜欢它。但是,我有一个问题,希望有人可以提供帮助。
我有一串用逗号分隔的值,并希望使用循环依次单独处理每个值。
例如
字符串 = '1,2,3,4,5,6,'
我想取第一个值“1”并在继续下一个值之前对其进行处理。
在上述情况下,您可以使用该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 指出的那样,遍历元素本身的一种干净方法是调用next
on 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