我有一个像下面这样的有效载荷 -
1,a1,21,31,b1
2,a2,22,32,b2
3,,23,33,b3
4,a4,,,b4
并尝试从此字符串中获取每第二列并将其放入列表中。
预期输出:
[a1,a2,a4]
我试过下面的代码但没有得到想要的输出 -
ListPayload = []
for line in ((payload.text).splitlines()):
ListPayload.append(line)
通过这样做,我得到如下输出 -
['1,a1,21,31,b1','2,a2,22,32,b2','3,,23,33,b3','4,a4,,,b4']
并使用下面的代码获取第二列-
filteredList =[]
for i in range(len(ListPayload)):
filteredList.append(ListPayload[i].split(",")[1])
然后我用下面的方法得到了想要的输出
result = [x for x in filteredList if x]
print(result)
是否有比这更好的方法来获得所需的输出?
最佳答案
试试这个:
payload = '''1,a1,21,31,b1
2,a2,22,32,b2
3,,23,33,b3
4,a4,,,b4'''
col = 1 # you can extract any column
[line.split(',')[col] for line in ((payload).splitlines()) if line.split(',')[col]]
Output:
## ['a1', 'a2', 'a4']
关于python - 如何从具有过滤项目的列表创建子列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56600744/