Python常见用法汇总

此篇主要记录写python遇到的一些常见用法。

1. 正则表达式匹配中文

当我们使用正则表达式匹配字符串中的中文中文时会发现字符串明明有目标串却不能匹配的情况

<span style="font-size:18px;">re.match(r'今天', str):</span>

字符串确实存在‘今天‘,解决办法只需要将中文转换为Unicode就行了:

<span style="font-size:18px;">re.match(ur'今天', post_time):</span>

2. python字典按照key和value排序

需要注意使用sorted函数是,要得到排序的序列需要使用其返回值,即虽然经过sorted函数,但是原来的序列不保证有序:

dict = {'a': 1, 'c':3,'b': 2}
sorted_key_list = sorted(dict.items())
sorted_value_list = sorted(dict.items(),key=lambda item:item[1],reverse=True)
print('dict:',dict)
print('sorted_key_list:',sorted_key_list)
print('sorted_list:',sorted_value_list)

输出:

dict: {'a': 1, 'c': 3, 'b': 2}
sorted_key_list: [('a', 1), ('b', 2), ('c', 3)]
sorted_list: [('c', 3), ('b', 2), ('a', 1)]

3. 获取一段文本当中的字典

试试下面的语句把!

set_words = list(set([word for line in data.split('\n') for word in line]))

4. 将词转为数字,或将数字转为词(接上)

int_to_vocab = {idx: word for idx, word in enumerate(set_words)}
vocab_to_int = {word: idx for idx, word in int_to_vocab.items()}

5. python list删除元素

删除元素,不能使用切片操作,必须使用list的pop()函数(默认删除最后一个,也可以指定index)或者del函数(指定index)。如我们要在二维list中每一行最多只能有两个元素,可以使用如下代码操作:

list = [['1','2','3','4'],['4','5','6','7'],['3']]
for tmp in list:
    if len(tmp)>2:
        for i in range(2,len(tmp)):
            tmp.pop()
print(list)

输出:

[['1', '2'], ['4', '5'], ['3']]

反之,若使用切片:

list = [['1','2','3','4'],['4','5','6','7'],['3']]
for tmp in list:
    if len(tmp)>2:
        tmp = tmp[:2]
print(list)

输出的还是原来的值。

6. ubuntu修改python为python2

rm /usr/bin/python

ln -s /usr/bin/python2 /usr/bin/python

7.  No module named 'tensorflow.python'

  错误:

    from tensorflow.python.platform import gfile
ImportError: No module named 'tensorflow.python'

原因:想要更改tensorflow代码,python3环境改成了python2

解决方法: 改成python3,然后卸载使用:

pip3 install --upgrade tensorflow

重新安装tensorflow

8.python中的lamda表达式简介:

如:

print(lambda x: x*x)

就相当于:
def square(x):
   return x*x

print(square(x))

在tensorflow中的Seq2Seq的tutorial中,

model_with_buckets()函数中有一个lamda表达式:

lambda x, y: seq2seq_f(x, y, True)

x,y传入作为seq2seq的函数的参数,然后调用执行seq2seq函数。

8.python中从文件中读取列表list:

在使用pandas写入文件的时候,列表数据默认是以列表的的形式写入的

如:['a','b','c']
但是当我们读出来的时候却是以字符串读取的,可以用split函数再次生成新的list,但是操作未免过于繁琐,设个时候假设我们的字符串的内容为:
list_str = '['a','b','c']'
为了避免再次生成list我们可以使用python里面提供的eval函数,即:
list =  eval(list_str)
这个时候返回的就是一个list

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏程序员互动联盟

【答疑释惑】结构体字节数如何计算

1 C语言中一个结构体在内存中占的字节数如何计算? 先看下面一个结构体: struct stru { int a; char c; }; 那么这个结构体在内存...

2777
来自专栏Linux驱动

Linux-bc命令(21)

1043
来自专栏C/C++基础

C++中的作用域与生命周期

Pascal之父Nicklaus Wirth曾经提出一个公式,展示出了程序的本质:程序=算法+数据结构。后人又给出一个公式与之遥相呼应:软件=程序+文档。这两个...

612
来自专栏行者常至

002.golang 基础知识

631
来自专栏我是攻城师

理解Java8的数据类型和运行时数据区域

Java虚拟机包含对对象的显式支持,对象要么是动态分配的类实例,要么是静态数组,对对象的引用我们可以叫做指针或者引用,一个对象可以有多个引用,对象总是通过引用的...

903
来自专栏C/C++基础

C++中string成员函数length()与size()和strlen()的区别

上面的代码片段获取的字符串长度均是4,看不出什么区别,那么方法一和方法二有什么区别呢?请看如下代码:

862
来自专栏GreenLeaves

JavaScript之对象学习

对象是一种非常重要的数据类型,他是一种自包含的数据集合,包含在对象里面的数据可以通过属性和方法两种形式来访问; 1.属性是隶属于某个特定对象的变量; 2.方法是...

1987
来自专栏青玉伏案

窥探Swift之类的继承与类的访问权限

  上一篇博客《窥探Swift之别具一格的Struct和Class》的博客可谓是给Swift中的类开了个头。关于类的内容还有很多,今天就来搞一下类中的继承以及类...

1755
来自专栏mathor

C++STL中set的使用策略(一)

1263
来自专栏逢魔安全实验室

UAF Writeup - pwnable.kr

0x00 UAF — pwnable.kr是一个韩国的CTF练习的网站,有很多经典的CTF题目供爱好者练习。 UAF(Use After Free)释放后重用...

3496

扫码关注云+社区