Python 3.x 我如何将名字和姓氏分开?

Python 3.x 我如何将名字和姓氏分开?,python-3.x,Python 3.x,我正在尝试将.txt列表中的名字打印到新的文本文件中 .txt列表如下所示(每对名称位于其自己的行中,其中的名称比此处显示的多得多): 史密斯,詹姆斯 多伊,约翰 怀特,苏珊 以下是我当前的代码: fname = input("Please enter the file name for your list of names: ") infile = open(fname,"r") data = infile.read() outfile = open("student-firstnames

我正在尝试将.txt列表中的名字打印到新的文本文件中

.txt列表如下所示(每对名称位于其自己的行中,其中的名称比此处显示的多得多):

史密斯,詹姆斯 多伊,约翰 怀特,苏珊 以下是我当前的代码:

fname = input("Please enter the file name for your list of names: ")
infile = open(fname,"r")
data = infile.read()

outfile = open("student-firstnames.txt", "w")

first = data.split(",")[-1]
print(first, file=outfile)

print("First names have been written to student-firstnames.txt.")

这只给了我最后一个名字,但我想要一个只有名字的完整列表。我能做些什么来实现这一点?

您可以尝试以下方法:

first = [i.split(", ")[1] for i in data.split("\n")]
print(first, file=outfile)

这将按换行符拆分数据,然后获取逗号后的部分,逗号是第一个名称。

您可以迭代文件对象,一次一行地处理文件的每一行:

with open(fname) as infile:
    for line in infile:
        ...
例如,您可以使用它来获取文件中每一行的名字列表:

with open(fname) as infile:
    first_names = [line.strip('\n').split(', ')[1] for line in infile]

您也可以尝试这样做来获取索引1中的名称

fname = input("Please enter the file name for your list of names: ")
infile = open(fname,"r")
outfile = open("student-firstnames.txt", "w")
x = '\n,'.join([line.split(', ')[1].strip() for line in infile])
outfile.write(x)
outfile.close()
infile.close()
输出:

James
,John
,Susan

在Python 3中,您可以这样做:

fname = input("Please enter the file name for your list of names: ")

with open(fname, "r") as infile, open("student-firstnames.txt", "w") as outfile:
    for line in infile:
        firstname = line.strip().split(', ')[-1]
        print(firstname, file=outfile)

您还可以使用
splitlines()
方法。太好了-这给了我一个只有名字的列表;但是新的文件看起来像:[“詹姆斯”、“约翰”、“苏珊”]-有没有办法删除[]和“”,让它们各自在线?@eeseitz我想你只需要名字,
smith、doe、white
。很抱歉搞混了-他们的名字是詹姆斯、约翰、苏珊。我想让他们各自为政谢谢-我试过这个,但结果是整个列表都是一样的,只是没有逗号。现在试试。。是的,它只打印名字,没有任何逗号。这几乎是完美的-谢谢。您对此有何看法?我在各行上获得输出(很好),但现在每个名字前面都有逗号:,
strip()
可能不需要换行符,因为它默认为剥离空白。@evambivalence哦,我从已接受的答案中看出,您希望有人为您编写代码。我以为你总的来说想学习如何做。谢谢你的帮助-我倾向于先看到正确的方法并从那里检查它,然后学习得更好;这就是我所接受的答案。