gpt4 book ai didi

替换名字中的小写字母,而不是姓氏

转载 作者:行者123 更新时间:2023-12-04 11:51:32 28 4
gpt4 key购买 nike

我有一个包含人名的数据库的问题。我想把名字放在缩写中,而不是姓氏。姓与名之间用逗号隔开,不同的人用分号隔开,如下例:

Michael, Jordan; Bird, Larry;

如果名称是单个单词,则代码如下:
breve$autor <- str_replace_all(breve$autor, "[:lower:]{1,}\\;", ".\\;")

使用此代码的结果:
Michael, J.; Bird, L.;

问题在于复合名称。使用此代码,名称:
Jordan, Michael Larry;

这将是:
Jordan, Michael L.;

有人能告诉我如何删除逗号和分号之间的所有小写字母吗?它看起来像这样:
Jordan, M.L.;

最佳答案

这是另一个解决方案:

x1 <- 'Michael, Jordan; Bird, Larry;'
x2 <- 'Jordan, Michael Larry;'

gsub('([A-Z])[a-z]+(?=[ ;])', '\\1.', x1, perl = TRUE)
# [1] "Michael, J.; Bird, L.;"

gsub('([A-Z])[a-z]+(?=[ ;])', '\\1.', x2, perl = TRUE)
# [1] "Jordan, M. L.;"

姓氏后跟 ,虽然名称的一部分后跟 ; .这里我使用 (?=[ ;])确保要匹配的模式后面的字符是空格或分号。

删除 M. 之间的空格和 L. ,需要一个额外的步骤:
gsub('\\. ', '.', gsub('([A-Z])[a-z]+(?=[ ;])', '\\1.', x2, perl = TRUE))
# [1] "Jordan, M.L.;"

关于替换名字中的小写字母,而不是姓氏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57838061/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com