首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用一行代码重写这些列并重新定位列名的数字部分?

如何使用一行代码重写这些列并重新定位列名的数字部分?
EN

Stack Overflow用户
提问于 2021-09-24 15:05:35
回答 1查看 22关注 0票数 0

我在list in orig中有遵循这个结构的列名,我正尝试将其重命名为“new”。

这四列有四组,总共16列。换句话说,以orig为例,列5-8将包含"2“而不是1,列9-12将包含"3”而不是"2",一直到"4“。新的列名本身将遵循相同的结构,但经过了改写,并在名称的末尾添加了分组编号。

代码语言:javascript
复制
orig = [CHARGE 1 STATUTE, CHARGE 1 DESCRIPTION, CHARGE 1 TYPE, CHARGE 1 CLASS]


new = [ChrgStatute1, ChrgDesc1, ArrstngChrgFelMisd,
ArrstngChrgSvrtyOrgnl1] 

我试图在一行程序中实现这一点,而不是使用大型字典手动重命名它们。我使用了字典理解和正则表达式替换的组合,但无法使其正常工作。有什么建议吗?

EN

回答 1

Stack Overflow用户

发布于 2021-09-24 15:37:15

你可以作为一个在线程序来做这件事,但是它有点读不懂。我首先拆分逻辑以显示它是如何工作的,而oneliner位于底部。

请注意,这仅适用于结构为WORD NUMBER WORD的原始列表元素

代码语言:javascript
复制
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)

输出

代码语言:javascript
复制
['ChargeStatute1', 'ChargeDescription1', 'ChargeType1', 'ChargeClass1']
['ChargeStatute1', 'ChargeDescription1', 'ChargeType1', 'ChargeClass1']
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69317262

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档