从输入文件我想只提取学生的第一个名字,然后将结果保存在一个名为“student - firstname.txt”的新文件中。输出文件应该包含一个列表 名字(不包括中间名)。我能够删除姓氏,但我有问题删除中间名任何帮助或建议?
文件中的学生姓名看起来像这样(姓氏,名字和中间名首字母)
马丁,约翰
史密斯,詹姆斯W。
布朗,阿什利S。
我的python代码是:
f=open("studentname.txt", 'r')
f2=open ("student-firstname.txt",'w')
str = ''
for line in f.readlines():
str = str + line
line=line.strip()
token=line.split(",")
f2.write(token[1]+"\n")
f.close()
f2.close()
答案 0 :(得分:1)
用空格拆分令牌[1]。
fname = token[1].split(' ')[0]
答案 1 :(得分:1)
f=open("studentname.txt", 'r')
f2=open ("student-firstname.txt",'w')
for line in f.readlines():
token=line.split()
f2.write(token[1]+"\n")
f.close()
f2.close()
答案 2 :(得分:1)
with open("studentname.txt") as f, open("student-firstname.txt", 'w') as fout:
for line in f:
firstname = line.split()[1]
print >> fout, firstname
注意:
您可以使用with
语句确保即使出现异常也始终关闭文件。对于旧的Python版本,您可能需要contextlib.nested()
'r'
是文件的默认模式。您无需明确指定
.readlines()
一次读取所有行。您可以直接遍历文件
为避免对文件名进行硬编码,您可以使用fileinput
。将其保存到firstname.py
:
#!/usr/bin/env python
import fileinput
for line in fileinput.input():
firstname = line.split()[1]
print firstname
示例:$ python firstname.py studentname.txt >student-firstname.txt
答案 3 :(得分:0)
结帐regular expressions。这样的事情可能会奏效:
>>> import re
>>> nameline = "Smith, James W."
>>> names = re.match("(\w+),\s+(\w+).*", nameline)
>>> if names:
... print names.groups()
('Smith', 'James')
第3行基本上说找到一个单词字符序列作为组0,然后是逗号,一些空格字符和另一个单词字符序列作为组1,后跟nameline
中的任何内容。
答案 4 :(得分:0)
f = open("file")
o = open("out","w")
for line in f:
o.write(line.rstrip().split(",")[1].strip().split()+"\n")
f.close()
o.close()