zoukankan      html  css  js  c++  java
  • Python中的join()函数的用法及列表推导式

    【红色为转载后新增部分】

    函数:string.join()

    Python中有join()和os.path.join()两个函数,具体作用如下:

    join():连接字符串数组。将字符串、元组、列表中的元素以指定的字符(分隔符)连接生成一个新的字符串
    os.path.join():将多个路径组合后返回

    一、函数说明

    1、join()函数

    语法:'sep'.join(seq)

    参数说明
    sep:分隔符。可以为空
    seq:要连接的元素序列、字符串、元组、字典


    上面的语法即:以sep作为分隔符,将seq所有的元素合并成一个新的字符串

    返回值:返回一个以分隔符sep连接各个元素后生成的字符串

    2、os.path.join()函数

    语法:os.path.join(path1[,path2[,......]])

    返回值:将多个路径组合后返回

    注:第一个绝对路径之前的参数将被忽略

    >>> os.path.join('d',r'c:a','b','c')
    'c:\a\b\c'

    import os
    BASE_PATH = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
    DATA_PATH =  os.path.join(BASE_PATH,'data')
    
    print(BASE_PATH)
    print(DATA_PATH)
    

    G:pytest
    G:pytestdata

    二、实例

    1.对序列进行操作(以 '.'为分隔符)

    seq = ['hello','good','boy','doiido']

    print('.'.join(seq))

    hello.good.boy.doiido

    2.对元组进行操作(以 ':'为分隔符)

    seq = ('hello','good','boy','doiido')

    print(':'.join(seq))

    hello:good:boy:doiido

    3.对字典进行操作

    seq = {'hello':1,'good':2,'boy':3,'doiido':4}

    print(':'.join(seq))

    doiido:boy:hello:good

    4.合并目录

    import os

    print(os.path.join('/hello/','good/boy/','doiido'))

    /hello/good/boy/doiido

    5.对字符串进行操作, (以 '-'为分隔符)

    seq = 'ABC'

    print('-'.join(seq))

    A-B-C

    三.Json字典转为SQL语句

    #表名polls_questions

    table_name = "polls_questions"

    #需要插入的Json数据
    data={'id': 1, 'question_text': 'you buy pro6?', 'pub_date':'2016-07-23 09:58:56.000000'}

    #对每一个值加单引号
    for key in data:
      data[key] = "'" + str(data[key]) + "'"

    【备注】:对于值为字符串的处理,先获取字符串内容,获取出来是没有引号的,然后转为str类型

    print(data['question_text'])
    you buy pro6?
    print(str(data['question_text']))
    you buy pro6?
    print("'"+str(data['question_text'])+"'")
    'you buy pro6?'

    #利用join()函数把id、question_text、pub_date合并在一起(id,question_text,pub_date)
    key = ','.join(data.keys())


    #利用join()函数把值合并在一起('1','you buy pro6?','2016-07-23 09:58:56.000000')
    value = ','.join(data.values())

    #INSERT INTO polls_questions (id,pub_date,question_text) VALUES ('1','2016-07-23 09:58:56.000000','you buy pro6?')

    real_sql = "INSERT INTO " + table_name + " (" + key + ") VALUES (" + value + ")"

     四、列表推导式

    实现相同的功能,代码更加简洁。

    列表推导式写9*9乘法表

    print('
    '.join([' '.join(['%s*%s=%s'%(x,y,x*y) for x in range(1,y+1)]) for y in range(1,10)]))
    

    非列表推导式写法

    for i in range(1,10):
        for j in range(1, i+1):
            print(str(j)+'*'+str(i)+'='+str(j*i)+' ', end='') # end=''表示输出不换行
        print('
    ', end='')
    

    参考:http://www.cnblogs.com/hjhsysu/p/5700962.html

  • 相关阅读:
    Java Number & Math 类
    excel小技巧-转置(表的横向纵向倒过来)
    excel小技巧-提取填充
    excel小技巧-分列
    Java switch case语句
    if...else
    12.15个人总结
    12.9个人总结
    11.29个人总结
    11.25日个人总结
  • 原文地址:https://www.cnblogs.com/uncleyong/p/6956399.html
Copyright © 2011-2022 走看看