python笔记

一、python通过莱文斯坦比来得到两字符串的相似度

import Levenshtein
similarity = Levenshtein.ratio("你叫啥名字", "你叫什么名字")

二、python获取当前代码的路径以及上层目录的方法

import os
import sys
print(sys.path[0]) 
print(os.path.dirname(sys.path[0]))
print(os.getcwd())
print(os.path.abspath(__file__))
print(os.path.realpath(__file__))

三、python如何替换:

1. 简单替换:

text='mark ,帅哥,18,183 帅,mark'
print(text.replace('18','19'))
print(text)

2. 正则替换:

import re
 
text='今天是:11/28/2018'
print(re.sub(r'(\d+)/(\d+)/(\d+)',r'\3-\1-\2',text))
print(text)

3. 高效正则替换:

将模式编译以获得更好的性能:

import re
 
text='今天是:11/28/2018'
datepat=re.compile(r'(\d+)/(\d+)/(\d+)')
print(datepat.sub(r'\3-\1-\2',text))
print(text)

四、如何迁移python的虚拟环境env

例如张某某创建了一个python的虚拟环境env,并且pip安装了一大堆的软件
现在李四想直接拿来主义,拷贝过来用,发现没法直接用。那么执行以下操作即可:

  1. 替换env的bin目录下的所有文件中,含有张某某的路径名,改为李四本人的存放路径名
grep zhangmoumou * | awk -F':' '{print $1}' | xargs sed -i 's#/the/path/of/zhangmoumou/env#/the/path/of/lisi/env#g'

把上面命令行里的zhangmoumou替换为你想拷贝的那个人的名字,后面的sed命令,也改为相应的路径即可

  1. python链接修改为李四本人使用的python,注意版本号要匹配,例如,之前张某某使用的是python3.6,那么李四本人机器上也得先有python3.6,即使是python3.8也不行
ln -s ~/anaconda3/bin/python python
ln -s python python3

五、如何对python的私有方法进行单元测试

在单元测试时,如果需要访问某个类的私有方法,只需要调用"_类名__方法名"即可

举个例子:

class Foo:
 def __bar(self, arg):
     print(arg)
 def baz(self, arg):
     self.__bar(arg)
f = Foo()
f._Foo__bar('a')

六、为何在python中“嘚“字经过lower()函数转换后会变成“噉“

问题背景:

使用python2.7版本,python脚本的编码为GBK,

#coding:gbk
s = '嘚'
print(s.lower())

复现流程:

先vi打开一个新建文件,在其中插入"嘚"字

然后执行:%!xxd,可以直接在vi中看到这个字的二进制编码为874e

将874e编辑为876e

然后执行%!xxd -r

这个时候就可以看到"噉"字出现了,因为"噉"的编码就是876e

以上现象解释如下:

python的lower()函数会扫描字符串中的大写字母,并将其转为小写字母,而4e的编码正好是大写字母"N",6e为小写字母"n"

因此如果有一个输入文件为"别嘚瑟“(其gbk编码为b1f0 874e c9aa),那么经过python的lower()函数后,就会变为gbk编码"b1f0 876e c9aa",也即"别噉瑟"

七、python运行时报错

/lib64/libstdc++.so.6: version `CXXABI_1.3.9' not found

解决办法:

LD_LIBRARY_PATH=/hom/your_name/anaconda3/lib:$LD_LIBRARY_PATH

八、推荐大家使用python代码的格式化好工具yapf

pip install yapf 即可
使用方法:yapf your_code.py

九、python检测文本的字符编码快速方法

python检测文本的字符编码有两种:
方法一:https://pypi.python.org/pypi/chardet/3.0.2
方法二:https://pypi.python.org/pypi/cchardet/0.3.5

cchardet要远远快于chardet,强烈推荐

十、python有哪些类似lambda的简洁代码方法


方法一:装饰器

方法二:列表解析

方法三:使用lambda

map( lambda x : x + 1, [1, 2, 3] )

a = [1, 2, 3]
r = []
for each in a:
    r.append(each+1)

简洁很多

十一、如何在python3中使用thrift

  1. thrift版本号与下载地址:
    https://codeload.github.com/apache/thrift/tar.gz/0.11.0
  2. python版本:
    Python 3.6.4 :: Anaconda, Inc.
  3. hello.thrift内容如下
namespace py HelloThrift
service HelloService{
    string SayHello(1:string username),
}
  1. 使用thrift生成python代码
thrift  -r --gen py hello.thrift
  1. server.py的代码如下
#!/usr/bin/python3
# -*- coding: UTF-8 -*-
import sys
sys.path.append('./gen-py')

from HelloThrift import HelloService
from HelloThrift.ttypes import *
from thrift.transport import TSocket
from thrift.transport import TTransport
from thrift.protocol import TBinaryProtocol
from thrift.server import TServer

class HelloWorldHandler:
    def __init__(self):
        self.log = {}

    def SayHello(self, user_name = ""):
        return "hello " + user_name

handler = HelloWorldHandler()
processor = HelloService.Processor(handler)
transport = TSocket.TServerSocket('localhost', 9091)
tfactory = TTransport.TBufferedTransportFactory()
pfactory = TBinaryProtocol.TBinaryProtocolFactory()
server = TServer.TSimpleServer(processor, transport, tfactory, pfactory)
server.serve()
  1. client.py的代码如下
#!/usr/bin/python3
# -*- coding: UTF-8 -*-
import sys
sys.path.append('./gen-py')

from HelloThrift import HelloService
from HelloThrift.ttypes import *
from HelloThrift.constants import *

from thrift.transport import TSocket
from thrift.transport import TTransport
from thrift.protocol import TBinaryProtocol

host = sys.argv[1].split(':')
transport = TSocket.TSocket(host[0], host[1])
transport = TTransport.TBufferedTransport(transport)
protocol = TBinaryProtocol.TBinaryProtocol(transport)
client = HelloService.Client(protocol)
transport.open()

msg = client.SayHello('Jack')
print(msg)
transport.close()
  1. 运行方式:
  • 首先启动服务端:
python server.py
  • 然后启动客户端:
python client.py localhost:9091
  • 运行结果如下:
hello Jack

十二、如何在hadoop上安装python算法包

例如pyahocorasick是个非常好用的多模式匹配的python算法包,但是在hadoop上无法使用。
解决办法:
需要以root身份登录hadoop平台,然后pip install pyahocorasick才行。
仅用hadoop身份登录hadoop平台,然后执行pip install pyahocorasick是不work的

十三、函数的可变参数应该怎么搞

方法1:

def print_numbers(*args):            
    print(type(args))  # tuple
    for n in args:
      print(type(n))   # int

print_numbers(1, 2, 3, 4)

方法2:

def print_numbers(*args):            
    print(type(args))  # tuple
    for n in args:
      print(type(n))   # int

l = [1, 2, 3, 4]
print_numbers(*l)  # *l,等价于 print_numbers(1, 2, 3, 4)
print_numbers(l)   # 将 l 作为一个整体传入,这样函数接受到的其实只有一个参数,且参数类型为 list

常见错误与解决办法:

  1. 错误现象
‘tqdm_notebook‘ object has no attribute ‘disp‘

解决办法:pip install ipywidgets

  1. 错误现象
importlib.metadata.PackageNotFoundError: No package metadata was found for bitsandbytes

解决办法:pip install bitsandbytes

  1. 错误现象
ModuleNotFoundError: No module named 'tensorboard'

解决办法:pip install tensorboard

参考文献:

  • https://blog.csdn.net/whatday/article/details/107965291
  • https://zhuanlan.zhihu.com/p/70649428
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: Python笔记.md 是一个用于记录Python编程相关内容的markdown文档。 在Python学习过程中,学习者通常会遇到各种问题和疑惑,需要有一个地方来记录学习笔记和重要概念,以方便日后复习和查阅。Python笔记.md 就是一个很好的选择。 Python笔记.md 可以按照自己的需要来组织内容,比如可以分为不同的章节或主题,并使用markdown语法来格式化文档,使其更加清晰易读。 在Python笔记.md中,可以记录Python的基础语法、常用数据结构、函数、类、模块等内容。此外,还可以记录一些常见的错误和解决方法,以便日后遇到类似问题时能够快速找到解决方案。 Python笔记.md 还可以用来记录自己的思考和理解。在学习过程中,我们常常会思考某个概念或代码背后的原理,这时候可以将自己的思考记录在笔记中,以便后续复习和回顾。 使用Python笔记.md 还可以方便与他人分享学习心得。可以在文档中加入注释或标题,使得文档更加易读和友好。同时,也可以将Python笔记.md 推送到版本控制系统中,与他人共享和共同编辑。 总之,Python笔记.md 是一个非常有用的工具,可以帮助学习者系统地记录、整理和复习Python编程相关的知识和经验。无论是初学者还是有经验的开发者,都可以从中受益,并提高自己的编程技能。 ### 回答2: Python笔记.md是一个使用Markdown语法编写的Python笔记文档。Markdown语法是一种轻量级的标记语言,可以快速地编辑和排版文档。 在Python笔记.md中,可以记录Python程序设计的相关知识、概念和技巧。通过使用Markdown语法,可以方便地插入代码块、链接、图片以及其他强调和排版格式,使得笔记更加直观和易读。 Python笔记.md可以按照不同的章节和主题组织内容,方便快速查找和阅读。在每个章节中,可以记录不同的Python编程概念,如数据类型、控制结构、函数、类等。可以通过示例代码和解释说明来详细解释这些概念的用法和特点。 在笔记中,还可以记录一些Python的常见问题和解决方案,例如常见错误、调试技巧等。这些内容可以帮助初学者更好地理解和掌握Python语言。 此外,Python笔记.md还可以连接到其他的Python资源,如官方文档、教程、在线代码编辑器等。这样可以提供更多的学习和参考资料。 总之,Python笔记.md是一个有条理、易读和方便编辑的Python学习笔记文档,可以帮助人们更好地学习和理解Python编程语言。 ### 回答3: Python笔记md是一种用来记录Python编程语言相关内容的文本文件格式。它使用Markdown语法来快速、简洁地编写和格式化笔记Python笔记md的优点是: 1. 简单易懂:Markdown语法简洁明了,使用起来非常简单,即便没有编程背景的人也能快速上手。 2. 跨平台兼容:无论是在Windows、Mac还是Linux系统中,Python笔记md都可以轻松使用。 3. 可读性强:Python笔记md的文本格式使得代码和说明可以同时显示,方便读者理解和学习。 4. 方便分享和发布:Python笔记md可以导出为HTML或PDF格式,方便分享给其他人或者发布到网络上。 5. 与开发工具兼容:大多数集成开发环境(IDE)和文本编辑器都支持Markdown语法,可以实时预览和编辑笔记。 使用Python笔记md可以帮助程序员记录代码和相关的解释和说明,方便复习和查看。它还可以用于编写技术博客、文档和教育材料等。而且由于其文本格式的特点,Python笔记md也非常适合使用版本控制系统进行版本管理。 总而言之,Python笔记md是一种简单、灵活且易于分享的笔记格式,可以有效提高编程学习和开发的效率。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值