我正在尝试以非常具体的格式写出数据,包括数字、日期、字符串。我的输入是一个包含此数据但不一定采用正确格式的数组。所以我需要对几乎每个元素应用自定义操作。输入和输出具有可变长度。
编辑:这里稍微澄清一下: 我正在解析来自不同格式的不同来源的数据。任务是将它们写成相同的格式。我正在为每个源编写一个默认解析器。没有办法解决这个问题。我正在将数据写入一种格式,其中包含输出的所有必要字段。例如[名称、数据、值、cur1、cur2、...] 现在我需要以一种非常特殊的方式格式化这些数据。例如。在名称中添加一些内容。基本上,我需要根据索引以一种相当独特的方式修改数组中的每个元素。
输入可能看起来像这样:
arr = ['name', 30.09.2019, 20.5, 'EUR', 'USD', ....]
# or
arr = ['name', 30.09.2019]
# or
arr = ['name', '', '', '', '', 'note', '17.5', '',....]
然后我需要对每个元素应用一些函数。 我能想到的唯一解决方案是:
for i in range(0, len(arr)):
if(i == 0):
process_zero(arr[i])
elif(i == 1):
process_one(arr[i])
...
如果它不是可变长度我可以做这样的事情:
process_zero(arr[0])
process_one(arr[1])
...
有没有更好/更干净的方法来做到这一点?
最佳答案
由于数组是可变长度的,所以听起来它并不是一个适合放置数据的结构。制作一个字典或一个类(或对于 Python >=3.7,一个 dataclass )以更结构化的格式包含您的数据。
# With dictionaries
sample = {'name' : 'Jane', 'USD' : 3.50, ... }
def myfunc(data_dict):
data_dict['name'] = data_dict['name'].upper()
data_dict['USD'] += 1
...
myfunc(sample)
# With classes
class MyClass:
def __init__(self, name = '', USD = 0, ...):
self.name = name
self.USD = USD
...
def myfunc(self):
self.name = self.name.upper()
self.USD += 1
...
sample = MyClass('Jane', 3.5, ...)
sample.myfunc()
关于python - 对数组每个元素的特殊操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56810769/