python列表输出问题
阿神
阿神 2017-04-17 17:58:03
[Python讨论组]

1.原文本

we avoid  avoid bois
ccccc  ddddd 1123 1123
fdsaflsj  we

2.我想去除每行的重复元素,代码如下

with open('10.txt', 'r') as f:
    for line in f.readlines():
        i = line.split()
        j = []
        for x in i:
            if not x in j:
                j.append(x)
        print j

3.但输出结果是

['we', 'avoid', 'bois']
['ccccc', 'ddddd', '1123']
['fdsaflsj', 'we']

4.我想要的结果是这样的,如何实现呢?尝试过print j,但元素都输出在一行了。

we avoid  bois
ccccc  ddddd 1123
fdsaflsj
阿神
阿神

闭关修行中......

全部回复(5)
ringa_lee

最后print j改成print " ".join(j)

伊谢尔伦

在内循环里输出j, 在内循环结束后输出 '\n'

ringa_lee
with open('10.txt', 'r') as f:
    for line in f.readlines():
        i = line.split()
        j = []
        for x in i:
            if not x in j:
                j.append(x)
        s = ""
        for elements in j:
            s = s + " " + elements   
        print s
PHP中文网

只需要把输出的 print j 改一下,改成 ' '.joint(j)

如果你只是 print j 那么等效于调用了 print j.__str__(),而这一句是会打印成你原文档的样子的。你也可以继承 list,通过 overwrite 他的 __str__ 也可以达到同样的效果。

例如:

    class List(list):
    
        def __str__(self):
            return ' '.join([str(x) for x in self])
    
    
    l = List(['a', 'b', 'c', 'd'])
    print l

这里有2个点,第一个是__str__;另一个是我str了list中的每个元素,这是为了避免join操作的时候发生错误。

所有代码在Python2.7.10上测试通过

高洛峰
with open('10.txt', 'r') as f:
    for line in f.readlines():
        print " ".join(set(line.split()))
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号