不管行数是多少,都从最后3行提取数据

时间:2018-12-13 13:32:19

标签: python

最近我一直在使用一些Python映像库,并且在从字符串的最后三行提取文本时遇到了问题。

让我们说我有一个字符串

a = '''
Human
Dog
Cat
Banana
Apple
Orange'''

我想将这些内容转换为2个不同的列表,其中一个具有字符串的最后三行,另一个具有字符串的所有其余行。

first_items = ['Human', 'Dog', 'Cat']
last_items = ['Banana', 'Apple', 'Orange']

如何在Python中做到这一点?

4 个答案:

答案 0 :(得分:3)

首先,您需要按行收集数据,以过滤出空行:

lines = list(filter(None, a.splitlines()))

然后,您可以使用Python的list slicing

first = lines[:-3]
last = lines[-3:]

答案 1 :(得分:0)

a = '''Human
Dog
Cat
Banana
Apple
Orange'''

full_list = a.split('\n')

list1 = full_list[:-3]
last_items = full_list[-3:]

输出:

In [6]: list1
Out[6]: ['Human', 'Dog', 'Cat']

In [7]: last_items
Out[7]: ['Banana', 'Apple', 'Orange']

答案 2 :(得分:0)

您可以将split与开头的strip一起使用,以删除第一个\n。然后使用其尺寸对列表进行切片,以使其可扩展到其他情况:

l = a.strip().split('\n')
l1, l2 = l[:len(l)//2], l[len(l)//2:] 

print(l1)
['Human', 'Dog', 'Cat']

print(l2)
['Banana', 'Apple', 'Orange']

答案 3 :(得分:0)

a = '''
Human
Dog
Cat
Banana
Apple
Orange'''

a是一个字符串,因此我们应通过用换行符\n进行拆分将其转换为列表,并通过从第一项中获取列表来修剪前导\n而不是第0个项目

full_list = a.split('\n')[1:]

它将给出['Human', 'Dog', 'Cat', 'Banana', 'Apple', 'Orange']

现在可以使用[:-3]提取前三名,而使用[-3:]提取后三名

list1 = full_list[:3]  
last_items = full_list[-3:]

希望有帮助。