導航:首頁 > 編程語言 > vdex文件用python解析

vdex文件用python解析

發布時間:2023-01-02 15:33:50

① 如何使用python解析超大XML文檔

在工作時最有吸引力的地方在於可以盡量避免使用昔日的技術。主機、租用線路、COBOL語言......沒有人應該要處理這些東西了,對不對?不幸的是,你最終會與現實發生沖突,即使是2014年,大家都知道JSON是最好的方式,你的票務供應商(你無法控制的)會告訴你,只有使用XML導出才能讓大容量的數據輸出他們的系統。
唉~~~~,好,很好,無所謂。這只是一次性的事情,我不需要照顧和養活這個XML,我只需要解析它並將數據保存到Postgres中,我們就可以利用它。不應該太困難,我需要寫一點python腳本…
import xml.etree.cElementTree as ET
tree = ET.parse('huge.xml')
for ticket_node in tree.findall('ticket'):
#etc...
......這將工作的非常好,如果我們談論的是一個幾MB的XML文檔,但是如果遇到的是huge.xml它是1.3GB的巨大文檔,這種方法只會融化你的筆記本電腦(以16GB的MacBookPro,一旦python的過程花了超過約3GB的內存,系統變得幾乎完全反應遲鈍,並且它幾乎還沒有完成)。回到原點。
首先讓我們快速瀏覽一下我們的數據。
<?xml version="1.0" encoding="UTF-8"?>
<tickets report_date="20140217">
<ticket>
<!-- various ticket fields, some of which I want -->
<comments type="array">
<comment>
<!-- various comment fields, some of which I want -->
</comment>
<!-- possibly more comment tags -->
</comments>
</ticket>
<!-- many, many ticket tags -->
</tickets>
不是很復雜,作為一個整體它不是一個真正的文件中,<ticket>節點只是一個列表,每一類又是一個小文件,我想挑出幾部分出來。我不需要做針對樹的任何復雜的遍歷,只是希望從每個<ticket>節點獲得一些數據然後把它扔掉再讀下一個。原來ElementTree的對眼前這個場景提供了一個工具:iterparse()。讓我們再試一次:
import xml.etree.cElementTree as ET
for event, element in ET.iterparse('huge.xml'):
if event == 'end' and element.tag == 'ticket':
#process ticket...
…什麼? !我的筆記本電腦又融化了!跟parse-the-whole-file的方法一樣使用了完全相同的內存(和系統響應能力)。到底發生了什麼事?
好吧,稍微google了一下,google告訴我,當iterparse()讀取元素時,它仍然是在內存中建立了一個完整的文檔樹,就像我一開始使用parse()方法一樣。幾個博客和stackoverflow的答案推薦添加element.clear()方法在循環結束時清理你不需要的對象,可以限制內存消耗。我拯救了你的麻煩:它不工作。其他博客,so的答案,甚至一個IBM白皮書表明需要在循環結束時進行更徹底的清掃工作結束:
import lxml.etree as ET #the IBM piece used lxml but I tried cElementTree also
for event, element in ET.iterparse('huge.xml'):
if event == 'end' and element.tag == 'ticket':
#process ticket...
element.clear()
while elem.getprevious() is not None:
del elem.getparent()[0]
......哎呀!我溶化了另一台筆記本電腦!
為什麼不工作?坦率地說,我不知道。
我稍微離題一下來說說為什麼我愛Python。作為一個DBA和系統工程師,我面對著大量的一次性編程挑戰。移動這個從這里到那裡、Munge數據、將數據從這里遷移到哪裡。這種類型的挑戰是非常適合於蠻力編程解決問題的這種方式。總之,有時是不值得在建立一個優雅的、易於維護的解決方案上花費任何時間。有時候,你只需要解決這個問題,然後忘掉它。 在處理這類問題上Python最棒的,簡潔的語法、良好的設計理念、豐富的庫都有助於這個工具,很容易快速解決您碰到的任何問題。即使速度比同等的Java解決方案的10倍還慢,如果需要5分鍾的時間寫而不是5小時,我更願意使用python,因為人類工時比CPU工時更有價值。
所有這一切都證明下述方式解決了我的問題,而不會融化的筆記本電腦:
import xml.etree.cElementTree as ET
def process_buffer(buf):
tnode = ET.fromstring(buf)
#pull it apart and stick it in the database
inputbuffer = ''
with open('huge.xml','rb') as inputfile:
append = False
for line in inputfile:
if '<ticket>' in line:
inputbuffer = line
append = True
elif '</ticket>' in line:
inputbuffer += line
append = False
process_buffer(inputbuffer)
inputbuffer = None
del inputbuffer #probably rendant...
elif append:
inputbuffer += line
不是最優雅,或有效率,或者通用的解決方案,但它可以工作。剛剛看了手邊的手冊,利用其結構的簡單性,在解析之前根據xml文件的內容將它切成可管理的塊,然後解析和處理每個塊,終於可以確保不再需要更長的時間來把它全部處理完。

② python 讀取CSV 文件

讀取一個CSV 文件

最全的

一個簡化版本

filepath_or_buffer : str,pathlib。str, pathlib.Path, py._path.local.LocalPath or any object with a read() method (such as a file handle or StringIO)

可以是URL,可用URL類型包括:http, ftp, s3和文件。對於多文件正在准備中

本地文件讀取實例:://localhost/path/to/table.csv

**sep **: str, default 『,』

指定分隔符。如果不指定參數,則會嘗試使用逗號分隔。分隔符長於一個字元並且不是『s+』,將使用python的語法分析器。並且忽略數據中的逗號。正則表達式例子:' '

**delimiter **: str, default None

定界符,備選分隔符(如果指定該參數,則sep參數失效)

delim_whitespace : boolean, default False.

指定空格(例如』 『或者』 『)是否作為分隔符使用,等效於設定sep='s+'。如果這個參數設定為Ture那麼delimiter 參數失效。

在新版本0.18.1支持

header : int or list of ints, default 『infer』

指定行數用來作為列名,數據開始行數。如果文件中沒有列名,則默認為0,否則設置為None。如果明確設定header=0 就會替換掉原來存在列名。header參數可以是一個list例如:[0,1,3],這個list表示將文件中的這些行作為列標題(意味著每一列有多個標題),介於中間的行將被忽略掉。

注意:如果skip_blank_lines=True 那麼header參數忽略注釋行和空行,所以header=0表示第一行數據而不是文件的第一行。

**names **: array-like, default None

用於結果的列名列表,如果數據文件中沒有列標題行,就需要執行header=None。默認列表中不能出現重復,除非設定參數mangle_pe_cols=True。

index_col : int or sequence or False, default None

用作行索引的列編號或者列名,如果給定一個序列則有多個行索引。

如果文件不規則,行尾有分隔符,則可以設定index_col=False 來是的pandas不適用第一列作為行索引。

usecols : array-like, default None

返回一個數據子集,該列表中的值必須可以對應到文件中的位置(數字可以對應到指定的列)或者是字元傳為文件中的列名。例如:usecols有效參數可能是 [0,1,2]或者是 [『foo』, 『bar』, 『baz』]。使用這個參數可以加快載入速度並降低內存消耗。

as_recarray : boolean, default False

不贊成使用:該參數會在未來版本移除。請使用pd.read_csv(...).to_records()替代。

返回一個Numpy的recarray來替代DataFrame。如果該參數設定為True。將會優先squeeze參數使用。並且行索引將不再可用,索引列也將被忽略。

**squeeze **: boolean, default False

如果文件值包含一列,則返回一個Series

**prefix **: str, default None

在沒有列標題時,給列添加前綴。例如:添加『X』 成為 X0, X1, ...

**mangle_pe_cols **: boolean, default True

重復的列,將『X』...』X』表示為『X.0』...』X.N』。如果設定為false則會將所有重名列覆蓋。

dtype : Type name or dict of column -> type, default None

每列數據的數據類型。例如 {『a』: np.float64, 『b』: np.int32}

**engine **: {『c』, 『python』}, optional

Parser engine to use. The C engine is faster while the python engine is currently more feature-complete.

使用的分析引擎。可以選擇C或者是python。C引擎快但是Python引擎功能更加完備。

converters : dict, default None

列轉換函數的字典。key可以是列名或者列的序號。

true_values : list, default None

Values to consider as True

false_values : list, default None

Values to consider as False

**skipinitialspace **: boolean, default False

忽略分隔符後的空白(默認為False,即不忽略).

skiprows : list-like or integer, default None

需要忽略的行數(從文件開始處算起),或需要跳過的行號列表(從0開始)。

skipfooter : int, default 0

從文件尾部開始忽略。 (c引擎不支持)

skip_footer : int, default 0

不推薦使用:建議使用skipfooter ,功能一樣。

nrows : int, default None

需要讀取的行數(從文件頭開始算起)。

na_values : scalar, str, list-like, or dict, default None

一組用於替換NA/NaN的值。如果傳參,需要制定特定列的空值。默認為『1.#IND』, 『1.#QNAN』, 『N/A』, 『NA』, 『NULL』, 『NaN』, 『nan』`.

**keep_default_na **: bool, default True

如果指定na_values參數,並且keep_default_na=False,那麼默認的NaN將被覆蓋,否則添加。

**na_filter **: boolean, default True

是否檢查丟失值(空字元串或者是空值)。對於大文件來說數據集中沒有空值,設定na_filter=False可以提升讀取速度。

verbose : boolean, default False

是否列印各種解析器的輸出信息,例如:「非數值列中缺失值的數量」等。

skip_blank_lines : boolean, default True

如果為True,則跳過空行;否則記為NaN。

**parse_dates **: boolean or list of ints or names or list of lists or dict, default False

infer_datetime_format : boolean, default False

如果設定為True並且parse_dates 可用,那麼pandas將嘗試轉換為日期類型,如果可以轉換,轉換方法並解析。在某些情況下會快5~10倍。

**keep_date_col **: boolean, default False

如果連接多列解析日期,則保持參與連接的列。默認為False。

date_parser : function, default None

用於解析日期的函數,默認使用dateutil.parser.parser來做轉換。Pandas嘗試使用三種不同的方式解析,如果遇到問題則使用下一種方式。

1.使用一個或者多個arrays(由parse_dates指定)作為參數;

2.連接指定多列字元串作為一個列作為參數;

3.每行調用一次date_parser函數來解析一個或者多個字元串(由parse_dates指定)作為參數。

**dayfirst **: boolean, default False

DD/MM格式的日期類型

**iterator **: boolean, default False

返回一個TextFileReader 對象,以便逐塊處理文件。

chunksize : int, default None

文件塊的大小, See IO Tools docs for more information on iterator and chunksize.

compression : {『infer』, 『gzip』, 『bz2』, 『zip』, 『xz』, None}, default 『infer』

直接使用磁碟上的壓縮文件。如果使用infer參數,則使用 gzip, bz2, zip或者解壓文件名中以『.gz』, 『.bz2』, 『.zip』, or 『xz』這些為後綴的文件,否則不解壓。如果使用zip,那麼ZIP包中國必須只包含一個文件。設置為None則不解壓。

新版本0.18.1版本支持zip和xz解壓

thousands : str, default None

千分位分割符,如「,」或者「."

decimal : str, default 『.』

字元中的小數點 (例如:歐洲數據使用』,『).

float_precision : string, default None

Specifies which converter the C engine should use for floating-point values. The options are None for the ordinary converter, high for the high-precision converter, and round_trip for the round-trip converter.

指定

**lineterminator **: str (length 1), default None

行分割符,只在C解析器下使用。

**quotechar **: str (length 1), optional

引號,用作標識開始和解釋的字元,引號內的分割符將被忽略。

quoting : int or csv.QUOTE_* instance, default 0

控制csv中的引號常量。可選 QUOTE_MINIMAL (0), QUOTE_ALL (1), QUOTE_NONNUMERIC (2) or QUOTE_NONE (3)

doublequote : boolean, default True

雙引號,當單引號已經被定義,並且quoting 參數不是QUOTE_NONE的時候,使用雙引號表示引號內的元素作為一個元素使用。

escapechar : str (length 1), default None

當quoting 為QUOTE_NONE時,指定一個字元使的不受分隔符限值。

comment : str, default None

標識著多餘的行不被解析。如果該字元出現在行首,這一行將被全部忽略。這個參數只能是一個字元,空行(就像skip_blank_lines=True)注釋行被header和skiprows忽略一樣。例如如果指定comment='#' 解析『#empty a,b,c 1,2,3』 以header=0 那麼返回結果將是以』a,b,c'作為header。

encoding : str, default None

指定字元集類型,通常指定為'utf-8'. List of Python standard encodings

dialect : str or csv.Dialect instance, default None

如果沒有指定特定的語言,如果sep大於一個字元則忽略。具體查看csv.Dialect 文檔

tupleize_cols : boolean, default False

Leave a list of tuples on columns as is (default is to convert to a Multi Index on the columns)

error_bad_lines : boolean, default True

如果一行包含太多的列,那麼默認不會返回DataFrame ,如果設置成false,那麼會將改行剔除(只能在C解析器下使用)。

warn_bad_lines : boolean, default True

如果error_bad_lines =False,並且warn_bad_lines =True 那麼所有的「bad lines」將會被輸出(只能在C解析器下使用)。

**low_memory **: boolean, default True

分塊載入到內存,再低內存消耗中解析。但是可能出現類型混淆。確保類型不被混淆需要設置為False。或者使用dtype 參數指定類型。注意使用chunksize 或者iterator 參數分塊讀入會將整個文件讀入到一個Dataframe,而忽略類型(只能在C解析器中有效)

**buffer_lines **: int, default None

不推薦使用,這個參數將會在未來版本移除,因為他的值在解析器中不推薦使用

compact_ints : boolean, default False

不推薦使用,這個參數將會在未來版本移除

如果設置compact_ints=True ,那麼任何有整數類型構成的列將被按照最小的整數類型存儲,是否有符號將取決於use_unsigned 參數

use_unsigned : boolean, default False

不推薦使用:這個參數將會在未來版本移除

如果整數列被壓縮(i.e. compact_ints=True),指定被壓縮的列是有符號還是無符號的。

memory_map : boolean, default False

如果使用的文件在內存內,那麼直接map文件使用。使用這種方式可以避免文件再次進行IO操作。

ref:
http://pandas.pydata.org/pandas-docs/stable/generated/pandas.read_csv.html

③ 如何在csv文件中用Python語言求沒科的評論就是分

要使用 Python 計算 CSV 文件中每個科目的平均分數,您可以使用以下代碼:

此代碼使用該模塊從 CSV 文件中讀取數據並將其解析為字典。然後使用字典來跟蹤每個科目的總分和分數數。從文件中讀取所有數據後,代碼將計算每個主題的平均分數並列印結果。csv

您可以通過更改 CSV 文件的名稱以及包含主題和分數信息的列的名稱來自定義此代碼。如果需要,您還可以修改代碼以將結果存儲在不同的數據結構中,例如列表或 Pandas 數據幀。

回答不易望請採納

④ 說說如何利用 Python 處理 CSV 文件

CSV 表示 「Comma-Separated Values (逗號分隔的值) 」 , CSV 文件是簡化的電子表格,實際為純文本文件。

一個 CSV 文件,格式是這樣的:

因為 CSV 文件中的每個單元格都是以逗號分割,所以也許有人會對每行文本調用 split() 方法,來解析 CSV 文件。但 CSV 文件也有自己的轉義字元,通過轉義字元,允許逗號和其他字元作為值的一部分,但單純使用 split() 方法不能處理這些轉義字元。因為這些潛在的缺陷,所以建議總是使用 csv 模塊來讀寫 CSV 文件。

csv 模塊是 Python 自帶的,所以可以直接導入。

要使用 csv 模塊從 CSV 文件中讀取數據,我們需要創建一個 Reader 對象。 通過 Reader 對象,我們可以迭代遍歷 CSV 文件中的每一行內容。

運行結果:

要用 csv 模塊讀取 CSV 文件,首先先使用 open() 函數打開它 ,就像打開任何其他文本文件一樣。然後將它傳遞給 csv .reader() 函數。 這個函數將返回一個 Reader 對象。注意,csv .reader() 函數不接受文件名作為入參。

要訪問 Reader 對象中的值,最直接的方法,就是利用 list() 將它轉換成一個普通 Python 列表。它實際為一個包含列表的列表,用於表示二維數據。

我們還可以使用表達式 data [ row ][ col ] 來訪問 CSV 中特定行和列的值。其中, row 是 data 中一個列表的下標, col 是該列表中,我們想訪問的項的下標:

運行結果:

運行結果:

Writer 對象可以讓我們把數據寫入 CSV 文件。

運行結果:

在 Windows 上,需要為 open() 函數的 newline 關鍵字參數傳入一個空字元串。如果沒有設置 newline 參數, output.csv 中的行距將變為兩倍,如下圖所示。

如果寫入的內容包含逗號,那麼 csv 模塊會自動加上雙引號,對其進行轉義,如下例所示。

運行結果:

我們也可以利用 delimiter ,來製作 TSV 文件,TSV 是Tab-separated values的縮寫,即以製表符作為分隔符的文件;利用 lineterminator 參數來設定行距。

運行結果:

這里利用 lineterminator='\n\n\n' 將行與行之間的字元變為三個換行符,效果就是實現了 3 倍行距。

⑤ 【MMD】用python解析VMD格式讀取

  MikuMikuDance(簡稱MMD)是一款動畫軟體,早期視為Vocaload角色製作動畫的軟體,現在還經常能在B站等視頻網站,或一些動畫網站(某I站)看到MMD作品。
  我在高中也簡單學過操作這款軟體以及PE、水杉等軟體,學會了簡單k幀、套動作、調渲染、加後期、壓縮等技術,這與我學習計算機專業有很大的關系(雖然學校學的和這個八竿子打不著,或許我應該學美術去),現在已經分不清很多東西了,封面靜畫就是雜七雜八過氣MME一鍋扔的成果,得益於G渲的強大,還能看出一點效果。
  現在我想學一些3D的開發,包括用程序讀取模型、動作等,很快我就想到之前用過的MMD。
  一些3D姿勢估計(3D pose estimate)或許能得到骨骼位置以及PAF(骨骼間關系),但我需要知道3D動畫是如何儲存動作數據的,才能想到怎樣將姿勢估計得到的數據轉化為動作數據。
  因此我找了一些資料解析MMD的動作數據VMD(Vocaload Mation Data)文件,並寫下這篇記錄。

  本文會用python解析vmd文件,並糾正上述文章的一點錯誤。
  根據MMD的規矩,上借物表:

封面靜畫:

  首先,vmd文件本身是一個二進制文件,裡面裝著類型不同的數據:uint8、uint32_t、float,甚至還有不同編碼的字元串,因此我們需要二進制流讀入這個文件。
  vmd格式很像計算機網路的協議格式,某某位是什麼含義,區別是,vmd文件的長度 理論 上是無限的,讓我們來看看。
  vmd的大致格式如下:

  最開始的就是 頭部(header) ,看到這就有十分強烈的既視感:

  其中, 版本信息(VersionInformation) 長度為30,是ascii編碼的字元串,翻譯過來有兩種,一為「Vocaloid Motion Data file」,二為「Vocaloid Motion Data 0002」,長度不足30後用(或者說b'x00')填充。這是由於vmd版本有兩種,大概是為了解決模型名稱長度不足,因此後續隻影響模型名稱的佔用長度。
   模型名稱(ModelName) ,是動作數據保存時用的模型的模型名,通過這個我們可以獲取到那個名稱,我們知道,一個動作數據想要運作起來,只要套用模型的骨骼名稱是標準的模板就可以,因此我想像不出這個名稱有何用處,或許某些模型帶有特殊骨骼,例如翅膀之類的,這樣能方便回溯?模型名稱的長度根據版本而決定,version1為10,version長度為20。編碼原文寫的是shift-JIS,是日語編碼,這樣想沒錯,然而我試驗後發現並非如此,例如經常改模型的大神 神帝宇 的模型,他的模型名稱用shift-JIS為亂碼,用gb2312竟然能正常讀出來;還有 機動牛肉 大神的模型,他的模型名稱用gb2312無法解碼,用shift-JIS解碼竟然是正常的簡體中文???怎麼做到的?

  骨骼關鍵幀,分為兩部分:骨骼關鍵幀數、骨骼關鍵幀記錄:

  我們可以查一下,每個骨骼關鍵幀的數量為111位元組。

  一開始還沒發現,旋轉坐標竟然有四個,分別為x, y, z, w,急的我去MMD里查看一下,發現和我印象中沒有什麼差別

  為何補間曲線的類型不確定呢?上面csdn博客的教程說 「uint8_t那裡有冗餘,每四個只讀第一個就行」 。說的沒有問題,首先我們要清楚這個補間曲線坐標的含義。
  我們打開MMD,讀入模型,隨意改變一個骨骼點,記錄幀,就會發現左下角會出現補間曲線。

  後面的格式與這個格式大同小異。

  表情關鍵幀分為:表情關鍵幀數、表情關鍵幀記錄:

  鏡頭關鍵幀分為:鏡頭關鍵幀數、鏡頭關鍵幀記錄:

  距離是我們鏡頭與中心紅點的距離,在MMD中,我們可以通過滑輪改變

  Orthographic似乎是一種特殊的相機,沒有近大遠小的透視關系(不確定),不過在我的實驗中,它一直取值為0。和上面的已透視沒有關系,當取消已透視時,透視值會強制為1。
  下面的骨骼追蹤似乎沒有記錄,可能是強制轉換成骨骼所在的坐標了。
  後面的格式與這個格式大同小異。

  表情關鍵幀分為:光線關鍵幀數、光線關鍵幀記錄:

  rgb顏色空間之[0, 1]之間的數,類似html的RGB(50%, 20%, 30%)這種表示方法,轉換方式就是把RGB值分別除以256。
  光線投射方向是[-1, 1]之間的小數。正所對的投射方向是坐標軸的負方向,例如將Y拉到1, 光線會從上向下投影。

  我依舊會使用面向對象的方式構建VMD類,不過構造方法無力,屬性太多,我選擇用靜態方法添加屬性的方式構建對象

  隨意掰彎一些關節並注冊、使用:

output:

  因為前面提到的編碼模式,我選擇用gb2312解碼,在很多(也許是大部分)動作數據都會報錯,可以去掉編碼方式:

  我們沒有移動方塊骨骼,因此位置信息都是0。
  不喜歡看歐拉角的話,可以寫一個轉換方法:

  這樣只要調用:

即可得到轉換成歐拉角的結果,同樣的方式還可以編寫轉換RGB、弧度、角度等
  python內置的json包可以很方便得將字典轉換成json格式文檔儲存。
  我們也可以試著寫一些將VMD轉換成vmd文件的方法。

  通過學習VMD的文件結構,大致了解了儲存動作數據的格式和一些方法,或許可以類比到一些主流的商業3D軟體上。
  讀取程序並不難,我寫程序的很多時間都是查二進制操作消耗的,通過這個程序,還鞏固了二進制操作的知識。
  我在google上找到了一個包 saba ,專門用於操控MMD的文件,包括模型、動作數據等

  現在學一下圖形學,等學有所得再做出更多東西。

⑥ python解析xml,包含中文,gb2312編碼。修改xml後重新寫入xml有些內容怎麼變了 我的步驟如下:

可能是python內置模塊的輸出是那樣的,不需要用ue轉,我覺得直接當文本讀入內容MSG,然後解碼再編碼msg.decode("gb2312").encode("utf-8"),然後用正則表達式<xx>替換內容</xx>來替換內容。。。個人覺得省事些,當然要看你具體情況

⑦ 利用python實現數據分析

鏈接:

提取碼:7234

煉數成金:Python數據分析。Python是一種面向對象、直譯式計算機程序設計語言。也是一種功能強大而完善的通用型語言,已經具有十多年的發展歷史,成熟且穩定。Python 具有腳本語言中最豐富和強大的類庫,足以支持絕大多數日常應用。 Python語法簡捷而清晰,具有豐富和強大的類庫。它常被昵稱為膠水語言,它能夠很輕松的把用其他語言製作的各種模塊(尤其是C/C++)輕松地聯結在一起。

課程將從Python的基本使用方法開始,一步步講解,從ETL到各種數據分析方法的使用,並結合實例,讓學員能從中借鑒學習。

課程目錄:

Python基礎

Python的概覽——Python的基本介紹、安裝與基本語法、變數類型與運算符

了解Python流程式控制制——條件、循環語句與其他語句

常用函數——函數的定義與使用方法、主要內置函數的介紹

.....

⑧ Python 自動化處理 Yaml 文件-



Yaml文件內容—示例1:

Yaml文件內容—示例2:

從上述示例文件內容可以看到 Yaml 數據結構:

1). 對象:鍵值對的集合(簡稱 "映射或字典")

例如:family 和 address 這兩個對象後面分別有對應的鍵值對集合。

2). 鍵值對用冒號 「:」 結構表示,冒號與值之間需用空格分隔

例如:

family 對象中的 key 為 name 與其對應的 value 值 Smile_Family 之間是使用空格分隔的。

address 對象中的 key 為 province 與其對應的 value 值 BeiJing 之間是使用空格分隔的。

3). 數組:一組按序排列的值(簡稱 "序列或列表"),數組前加有 「-」 符號,符號與值之間需用空格分隔

例如:

parents 中的 John 和 Jane

children 中的 Lily 和 Frank

4). 純量(scalars):單個的、不可再分的值。例如:字元串、bool值、整數、浮點數、時間、日期、null等

None值可用null也可用 ~ 表示;


yaml文件內容如下:

Python解析輸出為:

這個例子輸出一個字典,其中value包括所有基本類型

Yaml文件內容如下:

Python解析輸出為:

Yaml文件內容如下:

Python輸出為:

如果字元串沒有空格或特殊字元,不需要加引號,但如果其中有空格或特殊字元,則需要加引號。

這里要注意單引號和雙引號的區別:

單引號中的特殊字元轉到 Python 會被轉義,也就是到最後是原樣輸出;

雙引號不會被 Python 轉義,到最後是輸出了特殊字元;

Yaml文件內容如下:

Python輸出:


閱讀全文

與vdex文件用python解析相關的資料

熱點內容
dvd光碟存儲漢子演算法 瀏覽:757
蘋果郵件無法連接伺服器地址 瀏覽:962
phpffmpeg轉碼 瀏覽:671
長沙好玩的解壓項目 瀏覽:142
專屬學情分析報告是什麼app 瀏覽:564
php工程部署 瀏覽:833
android全屏透明 瀏覽:732
阿里雲伺服器已開通怎麼辦 瀏覽:803
光遇為什麼登錄時伺服器已滿 瀏覽:301
PDF分析 瀏覽:484
h3c光纖全工半全工設置命令 瀏覽:141
公司法pdf下載 瀏覽:381
linuxmarkdown 瀏覽:350
華為手機怎麼多選文件夾 瀏覽:683
如何取消命令方塊指令 瀏覽:349
風翼app為什麼進不去了 瀏覽:778
im4java壓縮圖片 瀏覽:362
數據查詢網站源碼 瀏覽:150
伊克塞爾文檔怎麼進行加密 瀏覽:890
app轉賬是什麼 瀏覽:163