分开名字、中间名和姓氏 (Python)

2024-02-23

我有一个包含数百名成员的列表,我想按名字、中间名和姓氏分隔这些成员,但其中一些成员具有前缀(用“P”表示)。所有可能的组合:

First Middle Last
P First Middle Last
First P Middle Last
P First p Middle Last

如何在 Python 中分隔名字(使用 P,如果可用)、中间名(使用 P,如果可用)和姓氏?这是我想出来的,但不太有效。

import csv
inPath = "input.txt"
outPath = "output.txt"

newlist = []

file = open(inPath, 'rU')
if file:
    for line in file:
        member = line.split()
        newlist.append(member)
    file.close()
else:
    print "Error Opening File."

file = open(outPath, 'wb')
if file:
    for i in range(len(newlist)):
        print i, newlist[i][0] # Should get the First Name with Prefix
        print i, newlist[i][1] # Should get the Middle Name with Prefix
        print i, newlist[i][-1]
    file.close()
else:
    print "Error Opening File."

我想要的是:

  1. 获取名字和中间名及其前缀(如果有)
  2. 将每个(第一个、中间、最后一个)输出到单独的 txt 文件或单个 CSV 文件(首选)。

非常感谢您的帮助。


这个完整的测试脚本怎么样:

import sys

def process(file):
    for line in file:
        arr = line.split()
        if not arr:
            continue
        last = arr.pop()
        n = len(arr)
        if n == 4:
            first, middle = ' '.join(arr[:2]), ' '.join(arr[2:])
        elif n == 3:
            if arr[0] in ('M', 'Shk', 'BS'):
                first, middle = ' '.join(arr[:2]), arr[-1]
            else:
                first, middle = arr[0], ' '.join(arr[1:])
        elif n == 2:
            first, middle = arr
        else:
            continue
        print 'First: %r' % first
        print 'Middle: %r' % middle
        print 'Last: %r' % last

if __name__ == '__main__':
    process(sys.stdin)

如果您在 Linux 上运行此程序,请输入示例行,然后按 Ctrl+D 表示输入结束。在 Windows 上,使用 Ctrl+Z 而不是 Ctrl+D。当然,您也可以通过管道输入文件。

以下输入文件:

First Middle Last
M First Middle Last
First Shk Middle Last
BS First M Middle Last

给出这个输出:

First: 'First'
Middle: 'Middle'
Last: 'Last'
First: 'M First'
Middle: 'Middle'
Last: 'Last'
First: 'First'
Middle: 'Shk Middle'
Last: 'Last'
First: 'BS First'
Middle: 'M Middle'
Last: 'Last'
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

分开名字、中间名和姓氏 (Python) 的相关文章

随机推荐

  • 期望:将生成命令的输出存储到变量中

    在我的 预期 脚本中 set REPOS path to repo set REV 73 set LOG spawn svnlook log r REV REPOS 这将在变量 LOG 中存储什么 16345 内存位置 它应该在变量 LOG
  • Socket.io 是否保证客户端按顺序接收广播事件?

    Socket IO 中是否有某种排序机制可以保证客户端按顺序接收事件 例如 如果服务器发出事件Evt1发送给客户端A 服务器广播Evt2致所有客户 因此客户端A收到Evt1 then Evt2并且只能按照这个顺序 我的猜测是否定的 如果是这
  • 如何加快 PostgreSQL 中的插入性能

    我正在测试 Postgres 插入性能 我有一个表 其中一列的数据类型为数字 上面也有一个索引 我使用以下查询填充了数据库 insert into aNumber id values 564 43536 34560 我使用上面的查询很快插入
  • UIWebView:为什么使用不存在的主机名时请求不会超时?

    我的情况是这样的 我有一个UIWebView它向用户提供主机名的 URL 发出 POST 请求 当主机名不存在时 我需要超时 以便我可以提醒用户他们应该检查他们的设置 怎么了 我提出这样的请求 NSString theURL NSStrin
  • Sublime 3 中的包控制不起作用?

    注意 我首先在论坛上搜索了 sublime 以便发布问题 因为我不确定这个问题是否适合这个特定的论坛 并想将其与其他帖子进行比较 如果它不应该在这里 请告诉我 我很乐意在此处关闭它并在任何其他 stackoverflow 论坛中打开它 谢谢
  • IIS 10.0 详细错误 - [httpDelete] [httpPut] 的 404.0

    我正在尝试在 ASP NET MVC 中创建一个 api 不幸的是 我有两个 HTTP 请求的问题 DELETE 和 PUT ActionName Index HttpGet public String Index return get A
  • 预接收挂钩被拒绝:提交消息中未发现 JIRA 问题?

    我已经提交并尝试将更改推送到存储库 但它给了我这个错误 remote refs heads feature OMT 1270 Missing French Translations cd54ab15bc8d5764ab12cf6fc202f
  • 如何从 Java 文本文件中读取逗号分隔值?

    我得到了这个文本文件 其中包含地图上不同点的纬度和经度值 如何将字符串拆分为纬度和经度 使用空格或制表符等其他分隔符执行此类操作的一般方法是什么 样本文件 28 515046280572285 77 38258838653564 28 51
  • 将不相关的集合映射到一个集合

    我有一个类 其中包含两个不同的不相关类型的集合 public class Entity ICollection
  • 在 Exchange Web 服务 (EWS) 中处理事件时识别项目类型

    我正在使用带有 EWS API 的流式通知 在事件处理程序中 我发现某个项目已被修改 但我尝试将修改后的项目绑定到电子邮件消息失败 错误信息具体是 服务 约会 返回的项目类型不兼容 与请求的项目类型 EmailMessage 似乎在尝试绑定
  • CSS 翻转卡 Internet Explorer 问题

    我正在尝试让 CSS 翻转卡在 Internet Explorer 11 中工作 我已阅读其他问题 解决方案是在翻转卡功能中添加 ms 前缀 我已经这样做了 但在 IE 11 中 翻转的卡片由于某种原因不显示背面 http jsbin co
  • 如何使用 PDFMake 和 vfs_fonts 在 Node.js 上创建 PDF?

    看起来像这样question https github com bpampuch pdfmake issues 642已经asked https stackoverflow com questions 41314411 create a l
  • 粘性前台服务无法重新启动,并出现“进程损坏”错误

    我有一个已启动的前台服务 我已注意从以下位置返回 START STICKY onStartCommand 我观察到前台服务不会无限期地运行 而是会被称为RestartProcessManager 本质上 维护一个进程 LRU 并且如果配置为
  • 由 __exit__ 中的 __enter__ 返回

    例如 我有这样的代码 with MyClass as x print I have only 0 format x with MyClass as y print I have 0 and 1 format x y print Again
  • SqlExceptionHelper:具有聚集列存储索引的表不支持游标

    我正在尝试从使用聚集列存储索引的 DWH SQL Server 表导入数据kudu通过flume 然而 经过我的习惯flumesource 从数据库检索一定数量的行 出现此异常 SqlExceptionHelper 具有聚集列存储索引的表不
  • 缩放 div 以适合窗口但保持宽高比

    如何缩放 div 以适合浏览器视图端口 但保留 div 的纵横比 我如何使用 CSS 和 或 JQuery 来做到这一点 您不需要为此使用 JavaScript 您可以使用纯CSS padding top 百分比是相对于包含块来解释的wid
  • 投射代理 - 获取 ClassCastException

    当我将动态代理类转换为我想要的对象时 我感到有些奇怪 在运行时 在某些条件下 我收到 ClassCastException 为了更好地解释这一点 这里是我想要使用的类 接口的定义 任何 应该 不相关的扩展接口都用括号括起来 public i
  • 在C中初始化char数组

    我不确定按以下方式初始化后 char 数组中会包含什么 char buf 5 0 这相当于 char buf 5 0 0 0 0 0 是的 是一样的 如果数量较少初始化器比数组中的元素大 那么剩余的元素将被初始化 就像具有静态存储持续时间的
  • 如何在sql server 2008中使用双while循环

    我正在开发一个约会日历应用程序 这里还是新手 我需要这方面的帮助 我需要在列中进行双循环 calendarID Slot Appointment Date slot 列的值将重复为 1 2 3 4 5 6 7 8 到 28 而 calend
  • 分开名字、中间名和姓氏 (Python)

    我有一个包含数百名成员的列表 我想按名字 中间名和姓氏分隔这些成员 但其中一些成员具有前缀 用 P 表示 所有可能的组合 First Middle Last P First Middle Last First P Middle Last P