我正试图弄清楚如何在第一个中删除'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
答案 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
模块首先读取它。