我在list in orig中有遵循这个结构的列名,我正尝试将其重命名为“new”。
这四列有四组,总共16列。换句话说,以orig为例,列5-8将包含"2“而不是1,列9-12将包含"3”而不是"2",一直到"4“。新的列名本身将遵循相同的结构,但经过了改写,并在名称的末尾添加了分组编号。
orig = [CHARGE 1 STATUTE, CHARGE 1 DESCRIPTION, CHARGE 1 TYPE, CHARGE 1 CLASS]
new = [ChrgStatute1, ChrgDesc1, ArrstngChrgFelMisd,
ArrstngChrgSvrtyOrgnl1] 我试图在一行程序中实现这一点,而不是使用大型字典手动重命名它们。我使用了字典理解和正则表达式替换的组合,但无法使其正常工作。有什么建议吗?
发布于 2021-09-24 15:37:15
你可以作为一个在线程序来做这件事,但是它有点读不懂。我首先拆分逻辑以显示它是如何工作的,而oneliner位于底部。
请注意,这仅适用于结构为WORD NUMBER WORD的原始列表元素
orig = ["CHARGE 1 STATUTE", "CHARGE 1 DESCRIPTION", "CHARGE 1 TYPE", "CHARGE 1 CLASS"]
# split logic for understanding
def reorder(string: str) -> str:
return f"{string.split()[0].capitalize()}{string.split()[2].capitalize()}{string.split()[1]}"
new = []
for column in orig:
new.append(reorder(column))
print(new)
# as oneliner:
new = [f"{string.split()[0].capitalize()}{string.split()[2].capitalize()}{string.split()[1]}" for string in orig]
print(new)输出
['ChargeStatute1', 'ChargeDescription1', 'ChargeType1', 'ChargeClass1']
['ChargeStatute1', 'ChargeDescription1', 'ChargeType1', 'ChargeClass1']https://stackoverflow.com/questions/69317262
复制相似问题