当前位置: 首页 > 面试题库 >

Python:如何遍历线段

丌官丰羽
2023-03-14
问题内容

如何遍历由空行分隔的线段?该文件如下所示:

ID: 1
Name: X
FamilyN: Y
Age: 20

ID: 2
Name: H
FamilyN: F
Age: 23

ID: 3
Name: S
FamilyN: Y
Age: 13

ID: 4
Name: M
FamilyN: Z
Age: 25

我想遍历这些块并在3列列表中获取“名称”,“姓氏”和“年龄”字段:

Y X 20
F H 23
Y S 13
Z M 25

问题答案:

这是使用itertools.groupby的另一种方法。该函数groupy遍历文件isa_group_separator(line)的每一行并为每行调用lineisa_group_separator返回True或False(称为key),itertools.groupby然后对产生相同True或False结果的所有连续行进行分组。

这是将行收集到组中的一种非常方便的方法。

import itertools

def isa_group_separator(line):
    return line=='\n'

with open('data_file') as f:
    for key,group in itertools.groupby(f,isa_group_separator):
        # print(key,list(group))  # uncomment to see what itertools.groupby does.
        if not key:
            data={}
            for item in group:
                field,value=item.split(':')
                value=value.strip()
                data[field]=value
            print('{FamilyN} {Name} {Age}'.format(**data))

# Y X 20
# F H 23
# Y S 13
# Z M 25


 类似资料:
  • 问题内容: 我有一个Map如下所示的bean: 这ftqSet适合以下数据结构: 在我的测试JSP文件中,我一直在尝试使用来访问数据 : 但是它没有输出${f.feedId}。为什么会这样呢?我将如何访问该结构的各个元素,以便创建一个漂亮的表? 问题答案: 的每次迭代中给出了一个实例,它反过来又和getValue()方法。这与在普通Java中进行操作类似。 例如 在的情况下, 的回报, ,所以你需

  • 问题内容: 我有一个带有一些十六进制数字的文本文件,我正在尝试将其转换为十进制。我可以成功转换它,但似乎在循环存在之前它会读取一些不需要的字符,因此我遇到了以下错误。 我的代码如下 每个十六进制数字都在新行中输入 问题答案: 追溯表明文件末尾可能有一个空行。您可以这样解决: 另一方面,最好使用代替。不要忘记关闭文件,或者更好地使用该文件来关闭它们:

  • 问题内容: 我想遍历,对于所有具有特定值的键,我希望将它们添加到new 。我怎样才能做到这一点? 问题答案: 假设类型TreeMap : (键和值类型当然可以是任何类)

  • 问题内容: 不会按优先级顺序进行迭代。 这可以工作,但可以清空队列。 问题答案: 从Javadocs 方法中提供的Iterator 不能保证以任何特定顺序遍历PriorityQueue的元素。如果您需要有序遍历,请考虑使用。 可能还有其他等效的机制。

  • 问题内容: 我创建了这样的一系列用户- 我已经为此添加了对象,并且我想遍历该数组中的每个用户。我知道这在使用ng-repeat的视图中是可能的,但是我需要在控制器中做到这一点。我努力了 - 但是我没有得到任何结果。 问题答案: 届时用户可能尚未加载,因此您需要等待: 这是上面的文档:https : //www.firebase.com/docs/web/libraries/angular/guid

  • 问题内容: 例如,假设我想列出一个字符串中每个字母的频率。最简单的方法是什么? 这是我在想的一个例子…问题是如何使allTheLetters等于所说的字母,而没有allTheLetters =“ abcdefg … xyz”之类的东西。在许多其他语言中,我可以只做字母+ +来增加字母的顺序,但是到目前为止,我还没有找到在python中做到这一点的方法。 问题答案: 您所问的问题(如何遍历字母)与您