首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Python 3:读取名字文件,创建名字和姓氏颠倒的新文件

Python 3:读取名字文件,创建名字和姓氏颠倒的新文件
EN

Stack Overflow用户
提问于 2017-09-30 06:21:53
回答 4查看 85关注 0票数 0

我是python的新手,被困在一项简单的任务上。我在stackoverflow上查看了类似的问题,但无法应用于我自己的问题。我已经创建了一个带有名称列表的文件。我如何创建一个新文件,其中它读取原始文件(假装我不知道文件中有多少个名字)并颠倒名字(人的顺序相同,但姓氏在名字之前)。下面是我的脚本:

代码语言:javascript
运行
复制
firstname1 = "Morty"
lastname1 = "Smith"
fullname1 = firstname1 + " " + lastname1

firstname2 = "Donna"
lastname2 = "Gueterman"
fullname2 = firstname2 + " " + lastname2

firstname3 = "Beth"
lastname3 = "Smith"
fullname3 = firstname3 + " " + lastname3

firstname4 = "Rick"
lastname4 = "Sanchez"
fullname4 = firstname4 + " " + lastname4

firstname5 = "Little"
lastname5 = "Dipper"
fullname5 = firstname5 + " " + lastname5

formal_names = fullname1,fullname2,fullname3,fullname4,fullname5

f = open("names_normal.txt","w")
f.write("%s " % (formal_names, ))
f.close()

def reverse_list(lst):
    new = []
    count = len(lst)-1
    while count >=0:
        new.append(lst[count])
        count -= 1
    return new

x = reverse_list(formal_names)

n = open("names_new.txt","w")
n.write("%s " % (x, ))
n.close()

以下是我的结果:

第一部影片:(《摩蒂·史密斯》、《唐娜·古特曼》、《贝丝·史密斯》、《里克·桑切斯》、《小北斗七星》)

第二张:(《小北斗》、《里克·桑切斯》、《贝丝·史密斯》、《唐娜·古特曼》、《莫蒂·史密斯》)

我想要的:(《史密斯·莫蒂》、《吉特曼·唐娜》、《史密斯·贝思》、《桑切斯·里克》、《北斗七星》)

任何帮助都将不胜感激!非常感谢!

EN

回答 4

Stack Overflow用户

发布于 2017-09-30 06:33:36

代码语言:javascript
运行
复制
def reverse_list(lst):
        new = []
        for name in lst:
                temp = name.split(" ")
                new += [temp[1]+" "+temp[0]]

你只是改变了数组中单词的顺序,你应该用空格来改变名字和姓氏的顺序。

票数 0
EN

Stack Overflow用户

发布于 2017-09-30 06:34:24

代码语言:javascript
运行
复制
def reverse_name(name):
    # Try to fill here and update if doesn't work

def reverse_list(lst):
    new = []
    for name in lst:
       new.append(reverse_name(name))
    return new
票数 0
EN

Stack Overflow用户

发布于 2017-09-30 07:14:17

这就是我解决这个问题的方法。最好是像上面提到的那样把它放在一个函数中。

代码语言:javascript
运行
复制
firstname1 = "Morty"
lastname1 = "Smith"
fullname1 = firstname1 + " " + lastname1
firstname2 = "Donna"
lastname2 = "Gueterman"
fullname2 = firstname2 + " " + lastname2
firstname3 = "Beth"
lastname3 = "Smith"
fullname3 = firstname3 + " " + lastname3
firstname4 = "Rick"
lastname4 = "Sanchez"
fullname4 = firstname4 + " " + lastname4
firstname5 = "Little"
lastname5 = "Dipper"
fullname5 = firstname5 + " " + lastname5
formal_names = [fullname1,fullname2,fullname3,fullname4,fullname5]

reversed = []
for i in range(0, (len(formal_names))):
    rev = formal_names[i].split()
    rev_name = rev[1] + ' ' + rev[0]
    reversed.append(rev_name)
print(reversed)
['Smith Morty', 'Gueterman Donna', 'Smith Beth', 'Sanchez Rick', 'Dipper Little']

现在,您只需将列表写入一个文件

代码语言:javascript
运行
复制
with open('output.txt', 'w') as file:
    for name in reversed:
        file.write(name)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46497640

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档