分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!
yaml應用總結
yaml是乙個堪比xml,json資料格式的更加方便,簡潔的,易於人眼閱讀的序列化資料格式。在很多的指令碼語言中都有涉及,下面以其在python語言中為例,簡單的記錄一下,以備今後複習所用。
這貌似是所有試驗的開場白了,那就是搭建好本次試驗的環境。因為python解析的時候,需要解析器的支援,所以需要安裝乙個。
博主的為windows64位,所以選擇途中箭頭所示的版本。具體要依照個人情況而定。
安裝是否成功的驗證方法就是開啟python直譯器,import一下即可。若出現下圖,那麼恭喜,環境搭建完畢了。
總的來說,語法沒什麼難度,也是人們司空見慣的了。
- 大小寫敏感
- 使用縮排表示層級關係
- 縮排時不允許使用tab鍵,只允許使用空格。
- 縮排的空格數目不重要,只要相同層級的元素左側對齊即可
另外,和python的注釋方式一樣,以#
號作為注釋符,很人性化了吧。
yaml本身語法很簡單,但是卻可以基於此實現比較強大的配置功能。思考一下,作為乙個配置檔案,可能出現的情況有哪些?
其實,認真的思考一下就會明白了。yaml不是乙個憑空捏造的資料格式,而是經過了實際考驗的人性化設計的一套規範。針對上面的問題,答案就是yaml本身支援的資料結構了,也很好記憶。
列表,陣列
模擬python語言,yaml性質與其保持一致。但是書寫方式上來說嘛,也可以是不一致的。大致有如下兩種:
['陣列1','陣列2','陣列3','陣列4','陣列5']
-陣列1
-陣列2
-陣列3
-陣列4
-陣列5
注意好符合一開始講的,語法規則即可。
原子量也即是純量,不能再細分的資料結構。模擬其他的程式語言,yaml也充分地考慮到了這一點。
日期: 採用復合 iso8601 格式的年、月、日表示。如1970-01-01
關於強制型別轉換: 可以通過兩個英文感嘆號+新的資料型別的方式來進行強制的型別轉換。
如:
e: !!str 123
f: !!str true
將變為:
除此簡單的介紹之外,yaml還有很多更為奇妙的語法,但是掌握了這些基礎的使用,寫乙個配置檔案基本上就夠用了。如果有興趣的話,可以在深入的研究一下。
這裡主要是記錄一下yaml在python語言中的應用。模擬於json庫,yaml庫與其有驚人的相似之處。乙個load方法,乙個dump方法。顧名知義,也比較的好理解。
下面是從網上找的乙個簡單的按照yaml語法書寫的乙個檔案,將作為待會的源來使用。
name: tom smithage: 37spouse: name: jane smith age: 25children: -name:
jimmy
smith
age: 15 -name1:
jenny
smith
age1: 12
# coding:utf-8import sysreload(sys)sys.setdefaultencoding('utf8')# __author__ = '郭 璞'
# __date__ = '2016/10/31'
# __desc__ = yaml 在python中的應用import yamlstream = file('example.yaml', 'r')data = yaml.load(stream)print data['children'][0]['name']
所得結果為:
jimmy smith
理解層面以python中的dict來理解即可。
# coding:utf-8
import sysreload(sys)sys.setdefaultencoding('utf8')# __author__ = '郭 璞'
# __date__ = '2016/10/31'
# __desc__ = yaml 在python中的應用
print yaml.dump(s)lists = ['zhangsan', 'lisi', 'wangwu', 'zhaoliu']print yaml.dump(lists)class
person
(object):
def__init__
(self, name, age): self.name = name self.age = agep1 = person('zhangsan', 19)p2 = person('lisi', 20)p3 = person('wangwu', 21)persons = [p1, p2, p3]print yaml.dump(persons)
執行結果:
同樣的,這裡也可以看到強制型別轉換的身影。
這樣的話,模擬json庫的學習,yaml庫也可以很好的被應用了。
使用這樣的方式可以最大限度的解耦和**,實現更高的可移植性。
同樣,寫配置檔案也不一定要用yaml,還可以有很多的選擇,比如configparser
了,.ini
了,還可以自定義(借助於正規表示式做好相關的訪問即可)。
沒有哪種是最好的,只有適合的才是最好的。在不同的場合選擇適合自己的配置檔案的書寫方式即可。
(^__^) 嘻嘻……
給我老師的人工智慧教程打call!
YAML 在Python中的應用
程式設計免不了要寫配置檔案,怎麼寫配置也是一門學問。yaml 是專門用來寫配置檔案的語言,非常簡潔和強大,遠比 json 格式方便。yaml 語言 發音 j m l 的設計目標,就是方便人類讀寫。它實質上是一種通用的資料序列化格式。它的基本語法規則如下 1 大小寫敏感 2 使用縮排表示層級關係 3 ...
python中yaml配置檔案模組的使用
和gnu一樣,yaml是乙個遞迴著說 不 的名字。不同的是,gnu對unix說不,yaml說不的物件是xml。yaml不是xml。為什麼不是xml呢?因為 上面5條也就是xml不足的地方。同時,yaml也有xml的下列優點 yaml可以基於流來處理 yaml表達能力強,擴充套件性好。總之,yaml試...
python中yaml檔案的讀寫
coding utf 8 author mr.deng time 2020 3 10 9 21 yaml是乙個專門用來寫配置檔案的語言。1.yaml檔案規則 區分大小寫 使用縮排表示層級關係 使用空格鍵縮排,而非tab鍵縮排 縮排的空格數目不固定,只需要相同層級的元素左側對齊 檔案中的字串不需要使用...