Python 3.x 我如何将名字和姓氏分开?
我正在尝试将.txt列表中的名字打印到新的文本文件中 .txt列表如下所示(每对名称位于其自己的行中,其中的名称比此处显示的多得多): 史密斯,詹姆斯 多伊,约翰 怀特,苏珊 以下是我当前的代码: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
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哦,我从已接受的答案中看出,您希望有人为您编写代码。我以为你总的来说想学习如何做。谢谢你的帮助-我倾向于先看到正确的方法并从那里检查它,然后学习得更好;这就是我所接受的答案。