<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
<channel>
<title><![CDATA[小小工程師的日常筆記]]></title> 
<link>https://xdeath.tw/index.php</link> 
<description><![CDATA[]]></description> 
<language>zh-tw</language> 
<copyright><![CDATA[小小工程師的日常筆記]]></copyright>
<item>
<link>https://xdeath.tw/read.php?84</link>
<title><![CDATA[python 文件模板Template]]></title> 
<author>admin &lt;tszheng@twnic.net.tw&gt;</author>
<category><![CDATA[python]]></category>
<pubDate>Fri, 06 Nov 2020 06:02:30 +0000</pubDate> 
<guid>https://xdeath.tw/read.php?84</guid> 
<description>
<![CDATA[ 
	當有一個很大的文件檔，內容幾乎都是相同，只是其中某些變數要取代掉的時候<br/><br/>例如一個很大的XML文件，每次的內容幾乎都一樣，只是有一些傳送對象<br/><br/>時間、ID、敘述的部分可能不一樣的時候，這時候使用正規的xml就顯得很麻煩<br/><br/>這時候就很適合使用Template將XML中這幾個內容進行替換。<br/><br/>首先先建立一個範例的文件檔sample.xml，其中要更換的內容則使用$&#123;XX&#125;作為標記<br/><br/><div class="code"><br/>?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot; ?&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br/>&lt;catalog&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;&lt;product&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;pname&gt;$&#123;PNAME&#125;&lt;/pname&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;price currency=&quot;NT&quot;&gt;$&#123;PRICE&#125;&lt;/price&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;mark /&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;&lt;/product&gt;<br/>&lt;/catalog&gt; <br/></div><br/><br/>這裡的pname就是產品名稱，price就是產品價格，接著我們進行替換<br/><br/><div class="code"><br/>from string import Template<br/>with open(&#039;sample.xml&#039;) as fr:<br/>&nbsp;&nbsp;&nbsp;&nbsp;data = fr.read()&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; #讀入檔案內容<br/>data = Template(data)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; #將內容當作範本<br/>data = data.safe_substitute(PNAME=&#039;IPHONE 12&#039;, PRICE=&#039;30000&#039;)&nbsp;&nbsp;&nbsp;&nbsp; #進行替換<br/>print(data)<br/></div><br/><br/>這時候就會看到以下的內容<br/><br/><div class="code"><br/>&lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&gt;<br/>&lt;catalog&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&lt;product&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;pname&gt;IPHONE 12&lt;/pname&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;price currency=&quot;NT&quot;&gt;30000&lt;/price&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;mark /&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&lt;/product&gt;<br/>&lt;/catalog&gt;<br/></div>
]]>
</description>
</item><item>
<link>https://xdeath.tw/read.php?72</link>
<title><![CDATA[[python] ascii轉字串]]></title> 
<author>admin &lt;tszheng@twnic.net.tw&gt;</author>
<category><![CDATA[python]]></category>
<pubDate>Sun, 14 Oct 2018 17:54:47 +0000</pubDate> 
<guid>https://xdeath.tw/read.php?72</guid> 
<description>
<![CDATA[ 
	最近因為專案用python處理strace的結果檔<br/><br/>碰到ascii的output卡了一下，做一個筆記紀錄處理方式<br/><br/>在python3中的字元都是ascii的編碼，&#92;x接兩個16進位的數字就是表示他是ascii<br/><br/>像下面這個例子<br/><br/><div class="code">string = &#039;&#92;x65&#92;x66&#92;x67&#039;<br/>print(string)<br/></div><br/><br/>跑出來的結果跟string = 'efg'結果是一樣的<br/><br/>也就是說在程式裡面宣告&#92;x65&#92;x66&#92;x67跟efg是一樣的意思<br/><br/>或是說python用ascii存字串，但是印出來的時候會自動轉成我們看得懂的文字<br/><br/>但是因為strace的結果我先把它存到一個文字檔，再去進行處理<br/><br/>結果&#92;x65&#92;x66&#92;x67讀進來之後就真的變成&#92;x65&#92;x66&#92;x67的一個字串了<br/><br/>但是找了半天很像也沒有可以用的函式去處理這個問題，只好自己土炮一個字一個字轉<br/><br/><div class="code">a = data.split(&quot;&#92;&#92;x&quot;)&nbsp;&nbsp; #首先先切出16進位的部分存到list中<br/>for i in range(1,len(a),1):<br/>&nbsp;&nbsp;&nbsp;&nbsp;a&#91;i&#93; = chr(int(a&#91;i&#93;,16))&nbsp;&nbsp;&nbsp;&nbsp;#然後一個一個16進位轉成10進位之後再轉成字元<br/>&nbsp;&nbsp;&nbsp;&nbsp;string = &#039;&#039;.join(a)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#最後在把它串在一起<br/>&nbsp;&nbsp;&nbsp;&nbsp;string = string.encode(&#039;utf-8&#039;)&nbsp;&nbsp;&nbsp;&nbsp; #然後使用utf-8做編碼<br/></div><br/><br/>
]]>
</description>
</item>
</channel>
</rss>