如果有些人只把他们的名字放在列表中,你如何将全名分为名字和姓氏?使用 OpenPyxl [duplicate]

How do you split full name to first and last names if some people only put their first name in the list? Using OpenPyxl [duplicate]

提问人:Jesse Morelli 提问时间:7/12/2022 更新时间:7/12/2022 访问量:50

问:

#What 到目前为止,我没有得到错误,这不起作用:ValueError:没有足够的值来解包(预期为 2,得到 1)。

for cell in ws[fullname_column][1:]:
    firstname, lastname = cell.value.split()
    ws.cell(row=cell.row, column=firstname_column).value = firstname
    ws.cell(row=cell.row, column=lastname_column).value = lastname
python excel 拆分 切片 openpyxl

评论

0赞 cybernetic.nomad 7/12/2022
首先在字符串中寻找空格?你打算如何区分有两个名字的人和有两个姓氏的人?
2赞 Charles Duffy 7/12/2022
程序员相信关于名字的谎言
0赞 Jesse Morelli 7/12/2022
与其说是拆分问题,不如说是当全名列表中没有姓氏时出现的问题。我的计划是使用放入其中的任何东西作为名字,并将姓氏留空。

答:

0赞 Avinash Sah 7/12/2022 #1

而不是

firstname, lastname = cell.value.split()

你应该

  1. 拆分并检查返回列表的长度。
  2. 如果长度为 1,那么您可能只有第一个名字
  3. 如果长度为 2,则您同时拥有 1 号和姓氏

评论

0赞 Jesse Morelli 7/12/2022
在这种情况下,这就是问题所在,因为某些值的长度=1,因为它们只在单元格中输入了它们的名字或姓氏。我想将所有长度=1 仅拆分为名字并将姓氏留空,但我不知道如何解决这个问题。
1赞 Avinash Sah 7/12/2022
哦,所以你可以改为按索引从行中获取值。
0赞 Jesse Morelli 7/12/2022
正确,但是如果没有可用的姓氏,当它无法拆分它时,您将如何使用 split()?
0赞 Avinash Sah 7/12/2022
你不需要分裂,看看我的第二个答案
0赞 Avinash Sah 7/12/2022 #2

在 OpenPyXL 中,您可以按行获取值,如下所示:

sheet[f"A{index}"].value)

因此,如果列 A 是名字,B 是姓氏,则可以单独获取两者的值。

这是行号index