删除lis中第一行的一部分

2024-05-15 14:01:37 发布

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

我想先想办法去掉“无” 列表行。在

y = ['none,none,none,none,none,none,OBJECTID,FULL_ADDRESS', '8724,CANARY',
     '8759,CARDINAL', '9774,W WABASH', '17745,WESTCHESTER']

我试过:

^{pr2}$

Tags: none列表addressfullobjectidcanarycardinal办法
3条回答

不能使用y.remove('none'),因为'none'不是y的成员,而是y成员的子字符串。在

处理这个问题的简单方法是“规范化”数据结构。如果要将y[0]视为多个值的列表,请将其拆分为多个值的列表,而不是将其保留为字符串。例如:

>>> y = [x.split(',') for x in y]
>>> y
[['none', 'none', 'none', 'none', 'none', 'none', 'OBJECTID', 'FULL_ADDRESS'],
 ['8724', 'CANARY'],
 ['8759', 'CARDINAL'],
 ['9774', 'W WABASH'],
 ['17745', 'WESTCHESTER']]

现在很容易删除'none'元素,因为有要删除'none'元素:

^{pr2}$

或者,如果你想破坏性的:

>>> for row in y:
...     while 'none' in row:
...         row.remove('none')

事实上,看起来您所做的是将一个CSV文件作为一组行读入,而不是作为CSV。如果是这样,真正的解决方案是首先使用^{}模块来读取它。在

如果你不想删除后面的逗号

if 'none,' in y[0]:
    y[0] = y[0].replace('none,','')
print y

如果你不想,你甚至不需要“如果”语句。在

^{pr2}$
>>> ','.join([x for x in y[0].split(',') if x != 'none'])
'OBJECTID,FULL_ADDRESS'

相关问题 更多 >