Python for Everything

  1. dir(object):可以看出該對象有什麼方法
  2. type(object):對象的類型
  3. str.find('a'): 查找第一個a字符串
    .upper() 全部大寫
    .lower() 全部小寫
    .lstrip() .rstrip() .strip():去掉左右空格
    .split() 對字符串進行切片
  4. dic.get(list()/str(),0):在dic中,把屬於list中的所有key的keyvalue找出來,後面的0是默認值,類似[NSDictionary forkeypath:],不過list參數也能用,並且不會出現空字典,並且會自動賦值
  5. list(dicObj),打印出來是全部keys,約等於dicObj.allkeys()
  6. dicObj.items 列出所有元素,所有也可以用: for a,b in dicObj.items 把a,b打印出來,items返回的(key,value)的tuples
  7. sorted(dicObj.items()):可以對dic的key進行排序輸出
  8. sorted([(v,k)for k,v in dicObj.items()]) 字典轉成數組排序
  9. import re 引入正則表達式庫 re.search('^From',strObj)進行匹配,返回T/F
    ^X.: :X開頭,【.】代表任何字符,【】代表重複0次以上,所以是X開頭,然後任意字符串,並且【:】結尾
    ^X-\S+: : X-開頭,【\S】代表任何非空格字符,【+】代表重複1次以上,並且【:】結尾
  10. 查找匹配字符re.findall
    [0-9]+ :符合【[]】的字符查找出來,【+】表示重複多次,所以是把目標STR全部字符串找出來
    ^F.+: :F開通,【.】【+】配合適配任意字符,最後字符是【:】,這是【貪婪】原則,導致中間有多個【:】只取最後
    ^F.+?: :【?】非貪婪原則,變成只取第一個【:】的字符串
    \S+@\S+ :把【@】字符左右非空字符都截取,查找郵箱
    ^From (\S+@\S+) :從From 之後開始查找郵箱
    @([^ ]*) :【@】開始,【[^ ]】查找非零字符串(【^】就是非的意思),把第一串找出來
    $[0-9.]+ :從【$】開始,把數字和小數點查找出來
符號 功能
^ 匹配一行的開頭
$ 匹配線的末尾
. 匹配任何角色
\ S 匹配空白
\ S 匹配任何非空白字符
* 重複一個字符零次或多次
*? 重複一個字符零次或多次(非貪婪)
+ 重複一次或多次角色
+? 重複一次或多次角色(非貪婪)
[AEIOU] 匹配列出的集合中的單個字符
[^ XYZ] 匹配不在列出的集合中的單個字符
[A-Z0-9] 字符集可以包括範圍
( 指示字符串提取的開始位置
) 指示字符串提取結束的位置
  1. 快捷鍵:
    command+ alt + L :把函數格式重構對齊
    Tab/ shift + Tab :代碼縮進提出
    command + [ :鼠標回到上一個鼠標地方
    command + Y :對應函數彈框展示定義 Esc退出窗口
    fn + F1 :顯示函數幫助文檔
    command + E 可打開最近訪問過的文件或者用 command+Shift+E打開最近編輯過的我文件。
    連續按兩下 Shitf 鍵可以搜索文件名、類名、方法名,還可以搜索目錄名,搜索目錄的技巧是在在關鍵字前面加斜槓/。
    要使用還沒有引入到模塊則沒法自動提示了,使用 Alt + Enter 智能提示你選擇合適的操作。
    擊左邊的Structure按鈕就進入代碼結構界面。從Structure我們可以看出當前代碼文件中有多少個全局變量、函數、類以及類中有多少個成員變量和成員函數。
    其中V圖標表示全局變量,粉紅色的f圖標表示普通函數,左上角帶紅色小三角的f圖標表示內嵌函數,C圖標表示類,類中m圖標表示成員函數,f圖標表示成員變量。點擊圖片可以跳轉到對應的代碼。
  2. main 對象初始化的時候會調用,del 對象銷燬的時候會調用
  3. SQL
    Logical key : 邏輯key,用於表內查詢
    Foreign key:外部key,用於連接其他表的對應key
    Primary key:主key,用於查詢
  4. SQL 創建表:
conn = sqlite3.connect('trackdb.sqlite')
cur = conn.cursor()

# Make some fresh tables using executescript()
cur.executescript('''
DROP TABLE IF EXISTS Artist;
DROP TABLE IF EXISTS Album;
DROP TABLE IF EXISTS Track;
DROP TABLE IF EXISTS Genre;

CREATE TABLE Artist (
    id  INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT UNIQUE,
    name    TEXT UNIQUE
);

CREATE TABLE Genre (
    id  INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT UNIQUE,
    name    TEXT UNIQUE
);

CREATE TABLE Album (
    id  INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT UNIQUE,
    artist_id  INTEGER,
    title   TEXT UNIQUE
);

CREATE TABLE Track (
    id  INTEGER NOT NULL PRIMARY KEY 
        AUTOINCREMENT UNIQUE,
    title TEXT  UNIQUE,
    album_id  INTEGER,
    genre_id  INTEGER,
    len INTEGER, rating INTEGER, count INTEGER
);
''')
  1. SQL表中插入數據:
cur.execute('''INSERT OR IGNORE INTO Artist (name) 
        VALUES ( ? )''', ( artist, ) )
    cur.execute('SELECT id FROM Artist WHERE name = ? ', (artist, ))
    artist_id = cur.fetchone()[0]

    cur.execute('''INSERT OR IGNORE INTO Album (title, artist_id) 
        VALUES ( ?, ? )''', ( album, artist_id ) )
    cur.execute('SELECT id FROM Album WHERE title = ? ', (album, ))
    album_id = cur.fetchone()[0]

    cur.execute('''INSERT OR IGNORE INTO Genre (name) VALUES ( ? )''',(genre, ))
    cur.execute('SELECT id FROM Genre WHERE name = ?', (genre, ))
    # print('genre_id',cur.fetchone())
    genre_id = cur.fetchone()[0]

    cur.execute('''INSERT OR REPLACE INTO Track
        (title, album_id, len, rating, count, genre_id) 
        VALUES ( ?, ?, ?, ?, ?, ?)''',
        ( name, album_id, length, rating, count, genre_id ) )

    conn.commit()
  1. SQL表查詢數據:
cur.execute('''SELECT Track.title, Artist.name, Album.title, Genre.name 
    FROM Track JOIN Genre JOIN Album JOIN Artist 
    ON Track.genre_id = Genre.ID and Track.album_id = Album.id 
        AND Album.artist_id = Artist.id
    ORDER BY Artist.name LIMIT 3''')
print('result',cur.fetchone())
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章