假设我有一个文件,其中包含姓名,电话,生日等数据,并且某些行中包含(不包含)这些数据:
John || <missing_bday> || 92475123
我正在尝试编写一个脚本,该脚本将使用电话号码作为标记在这些行之间进行选择,因为这是必填字段,并且是唯一的(在列表中),并且所有行都有它,那么如果len()
其中一个大于另一个,我会将其附加到新列表中。我该怎么做?我已经将这些行解析到列表中,并且考虑使用一些循环,列表中每个项目的索引并与另一个进行比较,但名称长度会有所不同。这只是一个例子,实际行中有一些垃圾编号,如创建的日期,最后一小时endswith()
都行不通。
list = ["|| 19 || 99210831 ", "John || 19 || 83291234", "Angelica |||| 99210831", "|||| 99210831"
newlist = []
这遍历每一行并获取数据,然后构建字典。
这意味着它可以将许多记录中每个电话号码的最长名称和最长年龄组合在一起。然后将它们全部打印出来。
data_in = ["|| 19 || 99210831 ", "John || 19 || 83291234", "Angelica |||| 99210831", "|||| 99210831"]
data = {}
for line in data_in:
line_parts = line.replace(' ','').split('||')
name_in, age_in, tel_in = line_parts[:3]
saved_name, saved_age = data.get(tel_in, ('',0))
if len(name_in) > len(saved_name):
saved_name = name_in
if age_in > saved_age:
saved_age = age_in
data[tel_in] = (saved_name, saved_age)
for tel, (name, age) in data.items():
print '||'.join((name, age, tel))
注意 命名列表list
是一个坏习惯,因为该名称在Python中已经意味着其他含义。(这是内置list()
函数)
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句