国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

你可能不知道的Python 技巧小結

2020-02-15 21:28:38
字體:
來源:轉載
供稿:網友

譯者 | 豌豆花下貓

聲明 :本文獲得原作者授權翻譯,轉載請保留原文出處,請勿用于商業或非法用途。

有許許多多文章寫了 Python 中的許多很酷的特性,例如變量解包、偏函數、枚舉可迭代對象,但是關于 Python 還有很多要討論的話題,因此在本文中,我將嘗試展示一些我知道的和在使用的,但很少在其它文章提到過的特性。那就開始吧。

1、對輸入的字符串“消毒”

對用戶輸入的內容“消毒”,這問題幾乎適用于你編寫的所有程序。通常將字符轉換為小寫或大寫就足夠了,有時你還可以使用正則表達式來完成工作,但是對于復雜的情況,還有更好的方法:

user_input = "This/nstring has/tsome whitespaces.../r/n"character_map = { ord('/n') : ' ', ord('/t') : ' ', ord('/r') : None}user_input.translate(character_map) # This string has some whitespaces... "

在此示例中,你可以看到空格字符“ /n”和“ /t”被單個空格替換了,而“ /r”則被完全刪除。這是一個簡單的示例,但是我們可以更進一步,使用unicodedata 庫及其 combining() 函數,來生成更大的重映射表(remapping table),并用它來刪除字符串中所有的重音。

2、對迭代器切片

如果你嘗試直接對迭代器切片,則會得到 TypeError ,提示說該對象不可取下標(not subscriptable),但是有一個簡單的解決方案:

import itertoolss = itertools.islice(range(50), 10, 20) # <itertools.islice object at 0x7f70fab88138>for val in s: ...

使用itertools.islice,我們可以創建一個 islice 對象,該對象是一個迭代器,可以生成我們所需的內容。但是這有個重要的提醒,即它會消耗掉切片前以及切片對象 islice 中的所有元素。

(譯注:更多關于迭代器切片的內容,可閱讀 Python進階:迭代器與迭代器切片)

3、跳過可迭代對象的開始

有時候你必須處理某些文件,它們以可變數量的不需要的行(例如注釋)為開頭。 itertools 再次提供了簡單的解決方案:

string_from_file = """http:// Author: ...// License: ...//// Date: ...Actual content..."""import itertoolsfor line in itertools.dropwhile(lambda line:line.startswith("http://"), string_from_file.split("/n")): print(line)

這段代碼僅會打印在初始的注釋部分之后的內容。如果我們只想丟棄迭代器的開頭部分(在此例中是注釋),并且不知道有多少內容,那么此方法很有用。

4、僅支持關鍵字參數(kwargs)的函數

當需要函數提供(強制)更清晰的參數時,創建僅支持關鍵字參數的函數,可能會挺有用:

def test(*, a, b): passtest("value for a", "value for b") # TypeError: test() takes 0 positional arguments...test(a="value", b="value 2") # Works...            
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 丹东市| 东平县| 大厂| 通城县| 安陆市| 明溪县| 故城县| 五台县| 怀仁县| 卓资县| 读书| 江川县| 广德县| 安图县| 伊通| 宁津县| 格尔木市| 双流县| 大港区| 泰宁县| 河南省| 灵川县| 略阳县| 通州区| 察哈| 天气| 呈贡县| 策勒县| 克东县| 满城县| 黔西| 郴州市| 灌南县| 延边| 信阳市| 石景山区| 十堰市| 玉林市| 西乌| 恩平市| 揭阳市|