V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
kisscucci
V2EX  ›  Python

数组转字符串?

  •  
  •   kisscucci · 2017-09-10 21:57:41 +08:00 · 3463 次点击
    这是一个创建于 2413 天前的主题,其中的信息可能已经有所发展或是发生改变。
    以下这段数组
    [{'beifan': u'D551', 'id': 2L, 'shuliang': 1334L}, {'beifan': u'D552', 'id': 3L, 'shuliang': 4003L}, {'beifan': u'D550', 'id': 4L, 'shuliang': 5103L}]
    怎么转换成为
    <li>D551:1334</li><li>D552:4003</li><li>D550:5103</li>
    这样的字符串?
    22 条回复    2017-09-13 00:57:19 +08:00
    linboki
        1
    linboki  
       2017-09-10 22:19:42 +08:00   ❤️ 1
    ```python
    a = [{'beifan': u'D551', 'id': 2L, 'shuliang': 1334L}, {'beifan': u'D552', 'id': 3L, 'shuliang': 4003L}, {'beifan': u'D550', 'id': 4L, 'shuliang': 5103L}]
    str = ''.join(map(lambda x: '<li>{}:{}</li>'.format(x['beifan'], x['shuliang']), a))
    print(str)
    ```
    kisscucci
        2
    kisscucci  
    OP
       2017-09-10 22:28:04 +08:00
    @linboki 提示 a 没定义?a 是什么?
    billion
        3
    billion  
       2017-09-10 22:32:52 +08:00
    billion
        4
    billion  
       2017-09-10 22:33:20 +08:00
    >>> x = [{'beifan': 'D551', 'id': 2, 'shuliang': 1334}, {'beifan': 'D552', 'id': 3, 'shuliang': 4003}, {'beifan': 'D550', 'id': 4, 'shuliang': 5103}]
    >>> ''.join([f'<li>{a["beifan"]}:{a["shuliang"]}</>' for a in x])
    '<li>D551:1334</><li>D552:4003</><li>D550:5103</>'
    billion
        5
    billion  
       2017-09-10 22:34:02 +08:00
    </li>写成</>了,不过不影响。你改一下就可以。
    billion
        6
    billion  
       2017-09-10 22:35:31 +08:00
    上面的代码需要 Python 3.6 或者以上才能成功运行。
    kisscucci
        7
    kisscucci  
    OP
       2017-09-10 22:37:39 +08:00
    @billion 我的是 2.7,刚才照着图片打了代码,发现没成功
    billion
        8
    billion  
       2017-09-10 22:37:42 +08:00   ❤️ 1
    如果是 Python 3.6 或者以下,需要使用:![]( http://7sbpmp.com1.z0.glb.clouddn.com/2017-09-10-22-37-37.png)
    caijihui11
        9
    caijihui11  
       2017-09-10 22:38:32 +08:00   ❤️ 1
    看了二楼,我辣眼睛
    kisscucci
        10
    kisscucci  
    OP
       2017-09-10 22:41:36 +08:00
    @caijihui11 哈哈,回过头来看懂 a 是什么了
    Victor215
        11
    Victor215  
       2017-09-11 00:22:49 +08:00 via Android
    为什么 python 做前端的事?
    secondwtq
        12
    secondwtq  
       2017-09-11 02:45:10 +08:00
    建议老实用模板引擎之类的,功能比 builtin 的强大,还帮你处理转义问题
    CEBBCAT
        13
    CEBBCAT  
       2017-09-11 08:09:13 +08:00 via Android
    贴代码可以用 gist
    gstqc
        14
    gstqc  
       2017-09-11 08:46:32 +08:00 via iPhone
    手写 HTML ……
    Terry05
        15
    Terry05  
       2017-09-11 09:01:58 +08:00
    用模板语言处理这个很容易呀
    kisscucci
        16
    kisscucci  
    OP
       2017-09-11 11:37:33 +08:00 via iPhone
    @Victor215 主要是因为我不懂 websocket 怎么传数组
    lgpqdwjh
        17
    lgpqdwjh  
       2017-09-11 12:41:46 +08:00
    print([
    "{beifan}:{shuliang}".format(**item)
    for item in [{'beifan': u'D551', 'id': 2L, 'shuliang': 1334L}, {'beifan': u'D552', 'id': 3L, 'shuliang': 4003L}, {'beifan': u'D550', 'id': 4L, 'shuliang': 5103L}]
    ])
    kisscucci
        18
    kisscucci  
    OP
       2017-09-11 12:44:16 +08:00 via iPhone
    @lgpqdwjh 谢谢
    Victor215
        19
    Victor215  
       2017-09-11 12:51:18 +08:00
    直接传 json 呀
    kisscucci
        20
    kisscucci  
    OP
       2017-09-11 18:06:15 +08:00 via iPhone
    @Victor215 也可以
    kisscucci
        21
    kisscucci  
    OP
       2017-09-11 18:06:29 +08:00 via iPhone
    按照一楼的方法解决了
    yucongo
        22
    yucongo  
       2017-09-13 00:57:19 +08:00
    In [578]: d = [{'beifan': u'D551', 'id': 2, 'shuliang': 1334}, {'beifan': u'D552', 'id': 3, 'shuliang': 4003}, {'beifan': u'D550', 'id': 4, 'shuliang': 5103}]
    In [579]: ''.join(['<li>' + elm.get('beifan') + ':' + str(elm.get('shuliang')) + '</li>' for elm in d])
    Out[579]: '<li>D551:1334</li><li>D552:4003</li><li>D550:5103</li>'
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   1287 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 29ms · UTC 17:43 · PVG 01:43 · LAX 10:43 · JFK 13:43
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.