python将txt转为字符串_python编程基础要点(二)

 ↑ 点击上方蓝字 关注「NLP有品」


1366829944e4f47e6b81cfe8483a3987.png

    “经济基础决定上层建筑”,编程也是一样,基础牢固了,技术层次就更高。本文总结了此前工作学习中记录的一些python基础要点知识分享给大家,本篇是“python编程基础要点”系列文章之二,之一请阅读【python编程基础要点(一)】。疏漏之处,请大家指出,后期我会不定期更新该系列文章,敬请期待。

1. 字符串前缀 u

    一般用在中文字符串前面,后面字符串以 Unicode 格式进行编码,防止因为源码储存格式问题,导致再次使用时出现乱码。

s = u"我是中文字符串。"

2. 字符串前缀 r

    作用是去除反斜杠的转义机制,将含有转义字符的字符串转为普通生字符串。

# 例如:s中的\n是普通字符不再代表换行符s = r"我不是换行符:\n\n\n\n"

3. 字符串前缀 f

    f开头表示在字符串内支持大括号内的 python 表达式。

s = 'AbCdEfG'print(f"{s.lower()}")out: 'abcdefg'

4. 字符串前缀 b

    b 前缀表示后面字符串是 bytes 类型。作用是,如在网络编程中,服务器和浏览器只认 bytes  类型数据。Python3 中,bytes 和 str 的互相转换方式是:

str.encode('utf-8')  # str转bytesbytes.decode('utf-8')  # bytes转str

6. 字符串反转

    通过始末索引和步长进行切片实现,可以推广到所有可以切片的对象。

s = 'abcdefg'print(s[::-1])out: 'gfedcba'

7. 字符串转标题

s = 'abcDefG'print(s.title())out: Abcdefg

8. 列表推导式

    列表生成式的结构是在一个中括号里包含一个表达式,然后是一个 for 语句,然后是 0 个或多个 for 或者 if 语句。

lst = [i*i for i in range(10)]print(lst)out: [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]

9. 列表推导式+if

lst = [i*i for i in range(10) if i%2==0]print(lst)out: [0, 4, 16, 36, 64]

10. 列表推导式+if else

lst = [i*i if i%2==0 else i for i in range(10)]print(lst)out: [0, 1, 4, 3, 16, 5, 36, 7, 64, 9]

11. 字典推导式

    字典生成式的结构是在一个中括号里包含一个表达式,然后是一个 for 语句,然后是 0 个或多个for 或者 if 语句。

dct={k:v for k, v in zip(range(10), range(10,0,-1))}print(dct){0: 10, 1: 9, 2: 8, 3: 7, 4: 6, 5: 5, 6: 4, 7: 3, 8: 2, 9: 1}

12. 列表元素排列组合

from itertools import product a, b = [1,2,3], [11,22]print(list(product(*[a, b])))out: [(1, 11), (1, 22), (2, 11), (2, 22), (3, 11), (3, 22)]

13. 列表打平

from itertools import chainlst = [[1,2],[3,4],[5,6]]list(chain(*lst))out: [1, 2, 3, 4, 5, 6]

14. 删除列表重复元素

    有两种方法,通过 remove 循环三处,另外一种是通过转 set 然后再转为 list,但这种会默认排序,会打乱原来的元素顺序。

from collections import Counterlst = [1,5,3,6,2,3,4,1,1,3,3]count = dict(Counter(lst))for c in count.items():    for i in range(c[1] - 1):        lst.remove(c[0])print(lst)out: [5, 6, 2, 4, 1, 3]

15. 进制之间转换

  • 十进制转其他进制

    使用bin(n), oct(n), hex(n)方法:

n = 10print("10转二进制:{}\n10转八进制:{}\n10转十六进制:{}\n".format(bin(n), oct(n), hex(n)))out: 10转二进制:0b1010     10转八进制:0o12     10转十六进制:0xa
  • 其他进制转十进制

    使用 eva(n)方法:

n = 10print("二进制转十进制:{}\n八进制转十进制:{}\n十六进制转十进制:{}\n".format(eval(bin(n)), eval(oct(n)), eval(hex(n))))out: 二进制转十进制:10     八进制转十进制:10     十六进制转十进制:10

16. 动态获取当前文件绝对路径

    当程序运行过程中获取某个文件的绝对路径:

file_path = '/'.join(__file__.split('/'))print(file_path)out: /xxx/xxx/test/dir1/file1.py

17 魔法参数之可变参数*args

    当传入参数个数不确定的时候使用, 可不必写成*args。在变量前面加上*(星号)才是必须的。

def fn1(des, *args):        print(des+': ', end=' ')        for arg in args:                print(arg, end=' ')des = '新生代知名女星'lst = ['蔡徐坤', '鹿晗', '肖战']fn1(des, *lst)out: 新生代知名女星: 蔡徐坤 鹿晗 肖战

18 魔法参数之关键字参数**kwargs

    当传入关键字参数个数不确定的时候使用,可不必写成 **kwargs。在变量前面加上**(星号)才是必须的。

def fn2(des, **kwargs):    print(des + ': ')    for kw in kwargs.items():        print(kw[0]+': '+kw[1])des = '新生代知名女星'dct = {'蔡徐坤': '男', '鹿晗': '男', '肖战': '男'}fn2(des, **dct)out: 新生代知名女星:      蔡徐坤: 男     鹿晗: 男     肖战: 男

19. 各类参数使用顺序

    标准参数,默认参数与*args、**kwargs在定义函数时使用的顺序:

fn(arg, *args, **kwargs, default=None)

20. 快速生成项目requirements.txt文件

    使用 pipreqs工具包,pip 安装:

pip install pipreqs

    然后项目根目录运行:

pipreqs ./

    完成后就会在根目录生成 requirements.txt 文件,注意:生成之后最好检查一遍是否与 pip  list 结果中一致,若不一致就修改一下。然后通过 requirements.txt 自动安装所有依赖包:

pip install -r requirements.txt

21. 将python文件打包成.exe可执行文件

    (1) 安装Pyinstaller

pip install Pyinstaller

    (2) 命令行进入到该.py文件目录,执行如下命令:

pyinstaller -F test.py

    执行上面命令,将看到详细的生成过程。当生成完成后,将会在此 test 目录下看到多了一个 dist 目录,并在该目录下看到有一个 test.exe 文件,这就是使用 PyInstaller 工具生成的 exe 程序。

22. Pcharm文件误删恢复

    下次更新内容可能包括:中文 NLP 各类任务简介 • 下、基于序列标注的关系抽取实战、十大排序算法(中)其中之一,敬请期待♥♥♥。


推荐阅读
  • python编程基础要点(一)

  • 十大排序算法(上)

  • 国内NLP竞赛平台一览

  • 国内AI开放平台一览

  • 语言模型及Word2vec与Bert简析

  • 传统文本匹配算法详解(附代码)

b6edb24316920e5d056bcc32209ab1ef.png

关注NLP有品NLP之路,你并不孤独

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值