删除列表中第一行的一部分

时间:2013-12-10 19:23:32

标签: python list

我正试图弄清楚如何在第一个中删除'none' 一排清单。

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

我试过了:

if 'none' in y[0]:
    y.remove('none')
print y

3 个答案:

答案 0 :(得分:1)

如果你想删除之后的逗号和

之后的逗号
if 'none,' in y[0]:
    y[0] = y[0].replace('none,','')
print y

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

>>> y = ['none,none,none,none,none,none,OBJECTID,FULL_ADDRESS', '8724,CANARY',
     '8759,CARDINAL', '9774,W WABASH', '17745,WESTCHESTER']
>>> y[0] = y[0].replace('none,','')
>>> y
['OBJECTID,FULL_ADDRESS', '8724,CANARY', '8759,CARDINAL', '9774,W WABASH', '17745,WESTCHESTER']
>>> y[0] = y[0].replace('none,','')
>>> y
['OBJECTID,FULL_ADDRESS', '8724,CANARY', '8759,CARDINAL', '9774,W WABASH', '17745,WESTCHESTER']
>>> 

答案 1 :(得分:0)

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

答案 2 :(得分:0)

您无法使用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'元素要移除:

>>> y = [[value for value in row if value != 'none'] for row in y]

或者,如果你想破坏性地做到这一点:

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

事实上,您所做的就是将CSV文件作为一堆行而不是CSV来读取。如果是这样,真正的解决方案是将其更改为使用csv模块首先读取它。