用python写一个用驼峰法来命名变量脚本

用python写一个用驼峰法来命名变量脚本

  • 前言
  • 一、思路
    • 1.用有道翻译来翻译变量名
    • 2.获取剪切板内容
    • 3.热键监听来执行程序
  • 二、使用步骤
    • 1.大致的使用方法
    • 2.要用到的库
    • 2.主方法
  • 总结


前言

输入中文变量名自动返回英文变量名的脚本


提示:以下是本篇文章正文内容,下面案例可供参考

一、思路

1.用有道翻译来翻译变量名

代码如下(示例):

class Youdao(object):

    def __init__(self):
        # 要翻译的内容
        self.word = gettext().decode('gbk')
        self.url = 'https://fanyi.youdao.com/translate?smartresult=dict&smartresult=rule'
        self.headers = {
            "Cookie": "[email protected]; OUTFOX_SEARCH_USER_ID_NCOO=1474258707.2598014; _ga=GA1.2.1009520071.1594950987; _ntes_nnid=e128de31dea304b779062ae8d3a3d1a4,1603424745279; JSESSIONID=aaa5npeigFJ3e-GQKnkQx; ___rl__test__cookies=1625816457871",
            "User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.25 Safari/537.36 Core/1.70.3861.400 QQBrowser/10.7.4313.400",
            "Referer": "https://fanyi.youdao.com/"
        }
        self.data = {}

    def generate_post_data(self):
        # 获取时间戳
        r = str(int(time.time() * 1000))
        # 拼接一个随机数
        i = r + str(random.randint(0, 9))
        # 获取sign
        sign = self.md5("fanyideskweb" + self.word + i + "@6f#X3=cCuncYssPsuRUE")
        self.data = {
            "i": self.word,
            "from": "AUTO",
            "to": "AUTO",
            "smartresult": "dict",
            "client": "fanyideskweb",
            "salt": i,
            "sign": sign,
            "ts": r,
            "bv": "8d869977ed9730c759a83d50a1f65ed0",
            "doctype": "json",
            "version": "2.1",
            "keyfrom": "fanyi.web",
            "action": "FY_BY_REALTlME",
        }

    def md5(self, data):
        # 1获取md5对象
        md5 = hashlib.md5()
        # 2添加源数据
        md5.update(data.encode())
        # 3得到结果
        result = md5.hexdigest()
        return result

    def get_data(self):
        response = requests.post(self.url, data=self.data, headers=self.headers)
        return response.content.decode()

    def parse_data(self, data):
        """数据的提取"""
        data_dict = json.loads(data)
        result = data_dict['translateResult'][0][0]['tgt']
        return result
        # print('翻译的结果是' + result)
    def run(self):
        pass
        # 1 确定url header是
        # 2 确定数据data
        self.generate_post_data()
        # 3发送请求
        data = self.get_data()
        #print(data)
        # 4数据的提取
        s=self.parse_data(data).title().replace(" ", "")#规范一下变量名
        aa=s[0].lower()+s[1:]
        pyperclip.copy(aa)
        spam = pyperclip.paste() 

2.获取剪切板内容

代码如下(示例):

def gettext():
        w.OpenClipboard()
        t = w.GetClipboardData(win32con.CF_TEXT)
        w.CloseClipboard()
        return t

3.热键监听来执行程序

这里扒来的:https://blog.csdn.net/lsjweiyi/article/details/79137931

代码如下(示例):

RUN=False #用来传递运行一次的参数
EXIT = False #用来传递退出的参数
user32 = ctypes.windll.user32  #加载user32.dll
id1=105 #注册热键的唯一id,用来区分热键
id2=106

class Hotkey(threading.Thread):  #创建一个Thread.threading的扩展类  

    def run(self):  
        global EXIT  #定义全局变量,这个可以在不同线程间共用。
        global RUN  #定义全局变量,这个可以在不同线程间共用。

        if not user32.RegisterHotKey(None, id1, 0, win32con.VK_F9):   # 注册快捷键F9并判断是否成功,该热键用于执行一次需要执行的内容。  win32con.VK_F9 改这个值为想要的键即可更改热键
            print ("Unable to register id"+ id1) # 返回一个错误信息

        if not user32.RegisterHotKey(None, id2, 0, win32con.VK_F10):   # 注册快捷键F10并判断是否成功,该热键用于结束程序,且最好这么结束,否则影响下一次注册热键。  
            print ("Unable to register id"+ id2)

        #以下为检测热键是否被按下,并在最后释放快捷键  
        try:  
            msg = ctypes.wintypes.MSG()  

            while True:
                if user32.GetMessageA(ctypes.byref(msg), None, 0, 0) != 0:

                    if msg.message == win32con.WM_HOTKEY:  
                        if msg.wParam == id1:

                            RUN = True
                        elif msg.wParam == id2:

                            EXIT=True
                            return

                    user32.TranslateMessage(ctypes.byref(msg))  
                    user32.DispatchMessageA(ctypes.byref(msg))

        finally:
            user32.UnregisterHotKey(None, id1)#必须得释放热键,否则下次就会注册失败,所以当程序异常退出,没有释放热键,
                                              #那么下次很可能就没办法注册成功了,这时可以换一个热键测试
            user32.UnregisterHotKey(None, id2)


hotkey = Hotkey()  
hotkey.start()  

二、使用步骤

1.大致的使用方法

1先运行程序
2.复制中文变量名
3.F9:执行翻译并把结果放到剪切板 就可以ctrl+v复制了
4.可以继续挂在后台或者 按F10:退出程序
tips:热键可以去代码中更改

2.要用到的库

代码如下(示例):

import ctypes
import ctypes.wintypes
import hashlib
import json
import os
import random
import sys
import threading
import time

import pyperclip
import requests
import win32api
import win32clipboard as w
import win32con
import win32gui

2.主方法

代码如下(示例):

if __name__ == '__main__':
    while(True):

        if RUN==True:
            youdao = Youdao()
            youdao.run()
            RUN=False

        elif EXIT==True:
            #这里是用于退出循环的
            sys.exit()
    

总结

没啥好说的老裁缝了

这里是完整的代码 我python的版本是3.7小伙伴们ctrl c v 一下就可以用了

import ctypes
import ctypes.wintypes
import hashlib
import json
import os
import random
import sys
import threading
import time

import pyperclip
import requests
import win32api
import win32clipboard as w
import win32con
import win32gui

RUN=False #用来传递运行一次的参数
EXIT = False #用来传递退出的参数
user32 = ctypes.windll.user32  #加载user32.dll
id1=105 #注册热键的唯一id,用来区分热键
id2=106

class Hotkey(threading.Thread):  #创建一个Thread.threading的扩展类  

    def run(self):  
        global EXIT  #定义全局变量,这个可以在不同线程间共用。
        global RUN  #定义全局变量,这个可以在不同线程间共用。

        if not user32.RegisterHotKey(None, id1, 0, win32con.VK_F9):   # 注册快捷键F9并判断是否成功,该热键用于执行一次需要执行的内容。  
            print ("Unable to register id"+ id1) # 返回一个错误信息

        if not user32.RegisterHotKey(None, id2, 0, win32con.VK_F10):   # 注册快捷键F10并判断是否成功,该热键用于结束程序,且最好这么结束,否则影响下一次注册热键。  
            print ("Unable to register id"+ id2)

        #以下为检测热键是否被按下,并在最后释放快捷键  
        try:  
            msg = ctypes.wintypes.MSG()  

            while True:
                if user32.GetMessageA(ctypes.byref(msg), None, 0, 0) != 0:

                    if msg.message == win32con.WM_HOTKEY:  
                        if msg.wParam == id1:

                            RUN = True
                        elif msg.wParam == id2:

                            EXIT=True
                            return

                    user32.TranslateMessage(ctypes.byref(msg))  
                    user32.DispatchMessageA(ctypes.byref(msg))

        finally:
            user32.UnregisterHotKey(None, id1)#必须得释放热键,否则下次就会注册失败,所以当程序异常退出,没有释放热键,
                                              #那么下次很可能就没办法注册成功了,这时可以换一个热键测试
            user32.UnregisterHotKey(None, id2)


hotkey = Hotkey()  
hotkey.start()  


class Youdao(object):

    def __init__(self):
        # 要翻译的内容
        self.word = gettext().decode('gbk')
        self.url = 'https://fanyi.youdao.com/translate?smartresult=dict&smartresult=rule'
        self.headers = {
            "Cookie": "[email protected]; OUTFOX_SEARCH_USER_ID_NCOO=1474258707.2598014; _ga=GA1.2.1009520071.1594950987; _ntes_nnid=e128de31dea304b779062ae8d3a3d1a4,1603424745279; JSESSIONID=aaa5npeigFJ3e-GQKnkQx; ___rl__test__cookies=1625816457871",
            "User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.25 Safari/537.36 Core/1.70.3861.400 QQBrowser/10.7.4313.400",
            "Referer": "https://fanyi.youdao.com/"
        }
        self.data = {}

    def generate_post_data(self):
        # 获取时间戳
        r = str(int(time.time() * 1000))
        # 拼接一个随机数
        i = r + str(random.randint(0, 9))
        # 获取sign
        sign = self.md5("fanyideskweb" + self.word + i + "@6f#X3=cCuncYssPsuRUE")
        self.data = {
            "i": self.word,
            "from": "AUTO",
            "to": "AUTO",
            "smartresult": "dict",
            "client": "fanyideskweb",
            "salt": i,
            "sign": sign,
            "ts": r,
            "bv": "8d869977ed9730c759a83d50a1f65ed0",
            "doctype": "json",
            "version": "2.1",
            "keyfrom": "fanyi.web",
            "action": "FY_BY_REALTlME",
        }

    def md5(self, data):
        # 1获取md5对象
        md5 = hashlib.md5()
        # 2添加源数据
        md5.update(data.encode())
        # 3得到结果
        result = md5.hexdigest()
        return result

    def get_data(self):
        response = requests.post(self.url, data=self.data, headers=self.headers)
        return response.content.decode()

    def parse_data(self, data):
        """数据的提取"""
        data_dict = json.loads(data)
        result = data_dict['translateResult'][0][0]['tgt']
        return result
        # print('翻译的结果是' + result)
    def run(self):
        pass
        # 1 确定url header是
        # 2 确定数据data
        self.generate_post_data()
        # 3发送请求
        data = self.get_data()
        #print(data)
        # 4数据的提取
        s=self.parse_data(data).title().replace(" ", "")#规范一下变量名
        aa=s[0].lower()+s[1:]
        pyperclip.copy(aa)
        spam = pyperclip.paste() 
def gettext():
        w.OpenClipboard()
        t = w.GetClipboardData(win32con.CF_TEXT)
        w.CloseClipboard()
        return t
if __name__ == '__main__':
    while(True):

        if RUN==True:
            youdao = Youdao()
            youdao.run()
            RUN=False

        elif EXIT==True:
            #这里是用于退出循环的
            sys.exit()
    


你可能感兴趣的:(python,爬虫)