importPyV8
defexecuteJavaScript(txt):
info_lt=['encodeURIComponent','encodeURI','escape','unescape','decodeURI','decodeURIComponent']
ctxt=PyV8.JSContext()
ctxt.enter()
func=ctxt.eval('''(function(a){returnencodeURIComponent(encodeURI(a))})''')
result_txt=func(txt)
returnresult_txt
一般情況下,獲取網頁的JS代碼,python能夠用相等的方法解析理解。
如果你確定要執行JS代碼,可以使用PyV8的模塊,但有一個問題。JS一般是處理網頁的DOM上下文的。這樣做不一定理想。
演示代碼如上
㈡ python程序在伺服器上跑不起來,好像是因為windows中和linux里的語法分析換行格式不同,怎麼改程序如下:
應該和python沒關系,是要處理的文件的問題。有點麻煩要看是哪裡出的問題,腳本有問題的可能性不大。如果確定只是換行符有問題,在linux下用dos2unix命令可以把要處理的文件從windows格式轉成linux的換行格式。不過也就只能做這一件事而已,不確定其他地方有沒有問題。
不過如果你的腳本在windows能正常工作,那麼linux也應該OK,腳本本身應該是沒問題的。
㈢ python中如何進行轉碼
In[1]:importHTMLParser
In[2]:
In[2]:defdecodeHtml(input):
...:h=HTMLParser.HTMLParser()
...:s=h.unescape(input)
...:returns
...:
In[3]:decodeHtml('A'OK')
Out[3]:u"A'OK"
In[4]:decodeHtml('A&R')
Out[4]:u'A&R'
In[5]:
如果解決了您的問題請採納!
如果未解決請繼續追問
㈣ python有啥html escape/unescape的函數沒
importcgi
s1="Hello<strong>world</strong>"
s2=cgi.escape(s1)
㈤ dht中的nodes二進制流編碼解碼在PHP中如何實現
escape() 方法:
採用ISO Latin字元集對指定的字元串進行編碼。所有的空格符、標點符號、特殊字元以及其他非ASCII字元都將被轉化成%xx格式的字元編碼(xx等於該字元在字元集表裡面的編碼的16進制數字)。比如,空格符對應的編碼是%20。unescape方法與此相反。不會被此方法編碼的字元: @ * / +
encodeURI() 方法:
把URI字元串採用UTF-8編碼格式轉化成escape格式的字元串。不會被此方法編碼的字元:! @ # $& * ( ) = : / ; ? + '
㈥ 是不是到了人生苦短的時候才用Python
Question
1 Python是什麼
2 人們為什麼用Python
3 Python是腳本語言嗎
Python版Hello World
Example
1 Python
2 Java
本文不扯什麼大道理,只是先介紹Python的背景,然後從實用的角度出發舉一兩個真實栗子。
這里寫圖片描述
首先要想了解要一門語言的好壞,或者為什麼招程序員喜歡(卧槽,原來程序員喜歡不是女朋友?)我們的先從語言的產生背景開始,比如:他出現在什麼年代,為了解決什麼問題而出現的等。當然我也只是跟其他語言做一個比較,不討論誰好誰壞,再說語言也沒有什麼好壞之分,就算有好壞之分,也得從實際應用場景出發,所有我們不討論這個問題。
這里寫圖片描述
好,好,大兄弟你們都消消氣,上面我扯的太多了,下面直接上重點…
1. Question
首先還是按照慣例,上來幾個問題,這樣能讓初學者一目瞭然,有個大概的認識
1.1 Python是什麼
是一種面向對象、解釋型計算機程序設計語言,由Guido van Rossum於1989年聖誕節為打發無聊時間,而開發的一個新的腳本解釋程序,可以感覺下什麼叫牛人,是ABC語言的一種繼承,至於為什麼選中Python作為語言名字,是因為他是一叫Monty Python的喜劇團體的愛好者,第一個公開發行版發行於1991年。
他的設計哲學是
優雅
明確
簡單
完全的面向對象。函數,模塊,數字,字元串都是對象,不想Java中還有基本類型,在Python中一切皆對象,那作為程序員的我們害怕找到對象嗎,直接New一個呀,呵呵
這里寫圖片描述
1.2 人們為什麼用Python
這個問題往往是入門者第一個問題,對此我在一本書找到了這樣的解答:
軟體質量
開發這效率
程序的可移植性
眾多標准庫支持
組件集成
享受樂趣
其他的不用多講,需要詳細了解的可以搜索下,我只是提供大家幾個方面讓大家了解,因為往往對於初學者,是迷茫的,因為不支持從什麼方向去了解一個事物,而我就是提供方向的,具體的大家可以自己去了解。我只說下最後一個,詳細的可以參考下這篇文章每個程序員都應該學習使用 Python或Ruby文章裡面也說的很明白,我總結幾點就是
代碼量小
維護成本低
編程效率高
同一樣問題,用不同的語言解決,代碼量差距太多了,一般情況下python是java的1/5,所以說人數苦短,我用python,多留點時間泡妹子吧,不然就老了
這里寫圖片描述
1.3 Python是腳本語言嗎
·
他是一種多用戶語言,至於為什麼大家的第一感覺是腳本語言,我是因為人們看他的他直接寫一個文件,不需要什麼編譯,跟腳本似得,直接運行的就行了。所以說我也很難給你一個確定答案,我就舉一些常見的應用場景:
腳本:可以寫一些輔助自己開的腳本,就比如,Android開發,會涉及到一常用的命令,但是如果是在windows用bat寫,這樣弄到mac就沒法運行的,所以可以用,python寫。另外如果你是伺服器管理員,那麼python腳本很適合你,程序長了用bash寫,你會砸電腦的
網站開發:他有強大的Django,Flask框架
科學計算:有Numpy和Matlab一樣強的數值計算介面
圖形界面程序開發:這個不用多解釋,就是常見的那種界面啦
2. Python版Hello World
通常任何一門語言都有一個hello world的過程,呵呵,所以說我們這里也一樣,因為通過他你會學習到該語言的一個最基本的程序框架和運行過程,這對應初學者才是最重要的。
既然前面也說了,可以把他當腳本語言,那我們就來個最簡單的,操作步驟如下:
在你的工作目錄下創建一個hello.py文件,別問我你不知道工作目錄是什麼,那你該學學計算機基礎了
在該文件里寫入
print 'hello world'
1
1
打開命令行,輸入:
python hello.py
1
1
順利的話你會看到hello world的輸出,是不是感覺好簡單,對,你沒看錯,就這么簡單,現在你可以說你是一個python程序員了,呵呵~
3. Example
這里就舉一個我最近實際應用中的例子,是什麼呢,施主莫急,聽平僧慢慢到來。場景是這樣的最近一個日記軟體本身的客戶端不能用了,但是數據在sqlite資料庫里呀,我們的需求是將裡面的一些數據導出為txt文件,怎麼這需求簡單吧
3.1 Python
首先用python來解決這個問題,據跟上面的描述,我們很清楚的想到如下步驟:
連接sqlite3資料庫
執行查詢語句
打開文件
將查詢的介面寫入的剛剛打開的文件中
關閉數據
關閉文件
呵呵,我有想到了,讓程序員把大象放到冰箱的故事了,可以參考這篇文章拖放三部曲——從「把大象放進冰箱」說起
好了,不廢話了,直接上代碼
#!/usr/bin/python
# -*- coding: cp936 -*-
import sqlite3
import HTMLParser
import codecs
import time
f=codecs.open('note.txt','a',"utf-8") #以追加方式打開一個文件
conn = sqlite3.connect('note.db') #打開sqlite資料庫
print "Opened database successfully";
#執行查詢語句,返回一個cursor
cursor = conn.execute("select created,weather,address,latitude,longitude,content from tb_notescontents,tb_notes where tb_notescontents.note_guid=tb_notes.guid")
#遍歷每一行
for row in cursor:
#取出改行的每一列
created= row[0]
weather= row[1]
address= row[2]
latitude= row[3]
longitude= row[4]
content= row[5]
html_parser = HTMLParser.HTMLParser()
d = time.localtime(created/1000)
currentTime = time.strftime('%Y-%m-%d %H:%M:%S',d)
#因為原理的內容是經過html轉義了,所以要轉回來,形如:今天,
weather = html_parser.unescape(weather)
address = html_parser.unescape(address)
content = html_parser.unescape(content)
f.write(currentTime) #寫入文件
f.write(' ')
f.write(weather)
f.write(' ')
f.write(address)
f.write(' ')
f.write(content)
f.write('\n')
f.write('\n')
f.write('\n')
conn.close() ## 關閉資料庫
f.close() #關閉文件
print "Operation done successfully";
至於邏輯,我在上面步驟也寫的很清楚了,另外程序也謝了很詳細的注釋,所以說就算你不懂python也能很容易的看懂。
可以看到我們大概只用了50行代碼就完成了,這個小需求,但是如果用Java是什麼結果呢
3.2 Java
首先的我們的找一個開發工具,就eclipse吧。創建一個項目,然後添加一個TestMan.java
工程結構如下:
這里寫圖片描述
在TestMan.java中寫一個基本的程序框架
public class TestMain {
public static void main(String[] args) {
}
}
卧槽,這么麻煩,搞了半天才把架子搭好,說實話Java確實中規中矩,干什麼你都得按照他的那一套來,所以說呢,我們就不能直接貼代碼了,步驟還得細分了,啥?
連接sqlite3資料庫
通過JDBC連接:但是因為jdbc(Java Data Base Connectivity,java資料庫連接)是java連接資料庫的一套抽象設計API,既然是抽象的所以是不能直接使用,要找到他的實現,既然是連接sqlite所以應該去sqlite官網或者從bitbucket這里下載,我下載的版本是sqlite-jdbc-3.8.11.2,下載完後將他放到eclipse的環境變數里,下載才把准備工作做完,下面才開始寫代碼
執行查詢語句
打開文件
將查詢的介面寫入的剛剛打開的文件中
關閉數據
關閉文件
現在我們直接上代碼了
import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.IOException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import org.apache.commons.lang3.StringEscapeUtils;
public class TestMain {
public static void main(String[] args) {
// load the sqlite-JDBC driver using the current class loader
Connection connection = null;
BufferedWriter bufferedWriter = null;
try {
Class.forName("org.sqlite.JDBC");
// create a database connection
connection = DriverManager.getConnection("jdbc:sqlite:note.db");
Statement statement = connection.createStatement();
statement.setQueryTimeout(30); // set timeout to 30 sec.
ResultSet rs = statement
.executeQuery("select created,weather,address,latitude,longitude,content from tb_notescontents,tb_notes where tb_notescontents.note_guid=tb_notes.guid");
bufferedWriter = new BufferedWriter(
new FileWriter("note.txt", true));
while (rs.next()) {
// read the result set
String created = rs.getString("created");
String weather = rs.getString("weather");
String address = rs.getString("address");
String latitude = rs.getString("latitude");
String longitude = rs.getString("longitude");
String content = rs.getString("content");
// write to file
bufferedWriter.write(created); // 寫入文件
bufferedWriter.write(" ");
bufferedWriter.write(weather);
bufferedWriter.write(" ");
bufferedWriter.write(address);
bufferedWriter.write(" ");
// 轉義html,可以看到我們又引用了commons-lang jar包
content = StringEscapeUtils.unescapeHtml4(content);
bufferedWriter.write(content);
bufferedWriter.newLine();
}
} catch (SQLException e) {
// if the error message is "out of memory",
// it probably means no database file is found
System.err.println(e.getMessage());
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally {
try {
if (connection != null)
connection.close();
} catch (SQLException e) {
// connection close failed.
System.err.println(e);
}
try {
if (bufferedWriter != null) {
bufferedWriter.close();
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
現在大家可以看見了java和python的區別了吧,在java中什麼功能也提供了,但是得引用各種jar,還得到處找去搜索或下載啦,各種肯爹,不過在python中很多常用庫已經內置了,所以省去了很多麻煩,所以說以我個人感覺,python個適合解決工作中的一些小問題,當然大問題也是么有問題的啦~,文章到此基本結束了,當然我也沒有偏袒那一面,另外我也是只是從我的工作或學習中得到的一些小領悟特此總結此處,如果大家有什麼好的見解歡迎評論吐槽~
㈦ python如何實現 JS中的 unescape函數
可用base64 模塊
import base64
a = "Hello world!"
b = base64.encodestring(a) #加密
c = base64.decodestring(b) #解密
print(a)
print(b)
print a == c
㈧ 使用python如何得到此種編碼&27979;amp;35797;所對應的中文呢
1 和 3 是HTML實體,可以通過標准庫HTMLParser 來解析:
#coding=utf8
import HTMLParser
parser = HTMLParser.HTMLParser()
s1 = parser.unescape('测试')
print s1
# output: 測試
s2 = parser.unescape('测试')
print s2
# output: 測試
2 是unicode 字面值,要想獲得真正的unicode,可以這樣做:
In [1]: u = unicode('\u6d4b\u8bd5', 'unicode_escape')
In [2]: u
Out[2]: u'\u6d4b\u8bd5'
In [3]: print u
測試
㈨ 網路爬蟲findall()正則(.*)不起作用,無返回
你調試一下就能發現錯誤了。web_data.text 里根本沒有¥ 這個符號。需要html 實體編碼轉換,正確的完整代碼如下:
import requests,re,html
headers = {
'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.132 Safari/537.36'
}
web_data = requests.get('https://bj.xiaozhu.com/',headers=headers)
res=html.unescape(web_data.text)
#print(res)
prices = re.findall('<span class="result_price">¥<i>(.*?)</i>起/晚</span>',res)
for price in prices:
print(price)
考慮到垃圾知道吃格式和縮進,特附此圖
㈩ python 寫XML時怎麼禁止轉義
最後解決辦法:
使用HTMLParser
把輸出的xml轉換一遍
html_parser = HTMLParser.HTMLParser()
tranform = html_parser.unescape(self.dom.toxml().decode('utf-8'))