如何遍历由空行分隔的线段?该文件如下所示:
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)
的每一行并为每行调用line
。isa_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中做到这一点的方法。 问题答案: 您所问的问题(如何遍历字母)与您