python的字符出来基础

如何分割字符串?

使用字符串的方法split()

a.split(‘i’)
[‘l’, ‘zh’, ‘x’, ‘n’]
如何合并字符串?

使用列表的方法join()

a = [‘l’, ‘zh’, ‘x’, ‘n’]
‘i’.join(a)
'lizhixin
其他的字符串函数:

复制代码

a = ‘lizhixin…’
a.strip(’.’)
‘lizhixin’
如何分割字符串?使用split()方法,如下:

a = “lizhixin”
b = a.split(‘i’)
b
[‘l’, ‘zh’, ‘x’, ‘n’]
列表中的列表有什么用途?组成了一个简单的二维数组,如下:

复制代码

a = [‘li’, ‘zhi’, ‘xin’]
b = [‘zhang’, ‘lu’]
c = [‘ming’]
d = [a, b, c]
d
[[‘li’, ‘zhi’, ‘xin’], [‘zhang’, ‘lu’], [‘ming’]]

d[0][0]
‘li’

d[2][0]
‘ming’

使用字符串的join()方法将字符列表转化为字符串:

a = [‘', 'q', '1'] #其元素不能是非字符 ''.join(a) 'q1’

如何排序?如何获取长度?如何赋值和赋值列表?

使用列表sort()方法重新排列元素,改变原列表:

a = [“li”, “zhi”, “xin”]
a.sort()
a
[‘li’, ‘xin’, ‘zhi’]
使用sorted()函数返回排序后列表副本:

a = [“li”, “zhi”, “xin”]
sorted(a)
[‘li’, ‘xin’, ‘zhi’]

a
[‘li’, ‘zhi’, ‘xin’]

a.sort(reverse=True)
a
[‘zhi’, ‘xin’, ‘li’]

3.3 元组
元组与列表的区别?元组是不可变的,不能插入和删除或修改,相当于一个常量列表,只能整体改变。

怎么创建元组?

a = () #创建空元组
a
()

a = 1, #元组不是由括号来创建的,而是由逗号
a
(1,)

3.4 字典
字典的键必须彼此不同,必须是唯一标识。

怎么创建字典?

a = {}
a
{}
怎么用其他的结构生成字典?

任意的双值子序列都行,可以很容易的使用zip()函数生成双元素序列。

复制代码

a = [[1, 2], [3, 4], [5, 6]]
dict(a)
{1: 2, 3: 4, 5: 6}

b = ((1, 2), (3, 4), (5, 6))
dict(b)
{1: 2, 3: 4, 5: 6}

c = (‘ab’, ‘cd’, ‘ef’)
dict©
{‘e’: ‘f’, ‘c’: ‘d’, ‘a’: ‘b’}
如何获取字典内所有的键?所有的值?如何获取键值对?

字典的keys()方法 和 values()方法

a = {1:2, 3:4, 5:6}
a.keys()
dict_keys([1, 3, 5])

a.values()
dict_values([2, 4, 6])
字典的items()方法:

list(a.items())
[(1, 2), (3, 4), (5, 6)]

如何跳到循环开始(用于跳过特定条件的循环)?

while True:
value = input("Interger, please [q to quit]: ")
if value == ‘q’:
break
number = int(value)
if number % 2 == 0:
continue
print(number, "squared is ", number*number)

Interger, please [q to quit]: 1
1 squared is 1
Interger, please [q to quit]: 2
Interger, please [q to quit]: 3
3 squared is 9
Interger, please [q to quit]: 4
Interger, please [q to quit]: q

循环外的else是如何使用的?

numbers = [1,3,5]
position = 0
while position < len(numbers):
number = numbers[position]
if number % 2 == 0:
print(‘Found even number’, number)
break
position += 1
else:
print(“No even number found.”)

No even number found.

a = {‘a’:‘b’, ‘c’:‘d’, ‘e’:‘f’}
for key in a:
print(key)

a
c
e

for value in a.values():
print(value)

b
d
f

for item in a.items():
print(item)

(‘a’, ‘b’)
(‘c’, ‘d’)
(‘e’, ‘f’)

for key, value in a.items():
print(key, value)

a b
c d
e f
如何用zip()函数进行迭代?

对多个序列使用并行迭代,就是一起迭代,等价于将多个序列有序合并了。

复制代码

c = 0.1, 0.2, 0.3
a = (1, 2, 3)
b = [‘a’, ‘b’, ‘c’, ‘d’]
c = 0.1, 0.2, 0.3, 0.4, 0.5,
for e, f, g in zip(a, b, c):
print(e, ’ ', f, ’ ', g)

1 a 0.1
2 b 0.2
3 c 0.3

def add_num(img):
draw=ImageDraw.Draw(img)
myfont=ImageFont.truetype(‘C:/windows/fonts/Arial.ttf’,size=20)
fillcolor="#ff0020"
width,heigth=img.size
draw.text((width-40,0),“yannping”, font=myfont, fill=fillcolor)
img.save(‘result.jpg’,‘jpeg’)
return 0
if name==‘main’:###主要作用之防止被其他调用,只能这里用
image=Image.open(‘image.jpg’)
add_num(image)

python常用模块
python的一个核心优势就是模块多,有了模块你的编程工作就轻松了,不必从头开始造轮子,直接使用模块就能成为高手。

系统模块(sys)

操作系统接口模块(os)

数学模块(math)

正则匹配模块(re)参照:Python正则表达式指南

读文件模块(fileinput)参照:Python中fileinput模块介绍

读写压缩文件模块(gzip)参照:gzip— Support for gzip files

基因组数据读写模块(pysam)参照:pysam: htslib interface for python

日志模块(logging)参照:python logging模块使用教程

与大多数编程语言相同,正则表达式里使用"“作为转义字符,这就可能造成反斜杠困扰。假如你需要匹配文本中的字符”",那么使用编程语言表示的正则表达式里将需要4个反斜杠"\\":前两个和后两个分别用于在编程语言里转义成反斜杠,转换成两个反斜杠后再在正则表达式里转义成一个反斜杠。Python里的原生字符串很好地解决了这个问题,这个例子中的正则表达式可以使用r"\“表示。同样,匹配一个数字的”\d"可以写成r"\d"。有了原生字符串,你再也不用担心是不是漏写了反斜杠,写出来的表达式也更直观。
当然最难的和最有价值的是工作经验。只会编程语言算什么?你有什么竞争力,你给个有点悟性的本科生2个月时间工作起来不会差很多。一定不要放大编程语言对于找工作的重要性。

多版本Python管理及Python连接MySQL
Python有个非常别扭的地方,就是两个不兼容的版本,很尴尬,有的包只能在低版本的2.7上才能运行,比如即将用到的MySQLdb。

所以首先必须在系统上安装两个版本的Python(貌似在pycharm可以轻松实现,但我电脑带不动):

windows下多个python版本共存(X)

Windows下Python多版本共存(好)

没那么复杂,直接把2和3都装上,导入环境变量(现在安装后会自动导入),接下来重命名就好了,比如你常用的是3,那就把2里面的python.exe 重命名为 python2.exe。以后想要运行 python2 就得用 python2 来启动。

关于 pip,则需要显式的运行,即在 pip 前面加上 python[n] –m

python2 -m pip list
python使用mysql数据库

python如何连接mysql数据库

注意 MySQLdb 只能在 python2 win32底下安装运行,而且不能用 pip 安装,去下面的地址手动安装。

下载地址:https://pypi.python.org/pypi/MySQL-python/

待续~
字典:键值对,没有顺序,键必须是常量。

字典内置函数

‘clear’, ‘copy’, ‘fromkeys’, ‘get’, ‘items’, ‘keys’, ‘pop’, ‘popitem’, ‘setdefault’, ‘update’, ‘values’
集合:没有顺序,元素之间没有重复,相当于舍弃了值的字典。集合操作(&,|,-,^,<,<=,>,>=)

集合内置函数

‘add’, ‘clear’, ‘copy’, ‘discard’, ‘pop’, ‘remove’, ‘update’
‘isdisjoint’,‘issuperset’,‘issubset’,‘symmetric_difference’,‘difference’,‘union’, ‘intersection’, ‘symmetric_difference_update’,‘intersection_update’,‘difference_update’,

获取脚本所在目录的正确方法(转)
1.以前的方法
如果是要获得程序运行的当前目录所在位置,那么可以使用os模块的os.getcwd()函数。
如果是要获得当前执行的脚本的所在目录位置,那么需要使用sys模块的sys.path[0]变量或者sys.argv[0]来获得。实际上sys.path是会去寻找模块的搜索路径列表,sys.path[0]和sys.argv[0]是一回事因为Python会自动把sys.argv[0]加入sys.path。
具体来说,如果你在C:\test目录下执行pythongetpath\getpath.py,那么os.getcwd()会输出“C:\test”,sys.path[0]会输出“C:\test\getpath”。
更特别地,如果你用py2exe模块把Python脚本编译为可执行文件,那么sys.path[0]的输出还会变化:
如果把依赖库用默认的方式打包为zip文件,那么sys.path[0]会输出“C:\test\getpath\libarary.zip”;
如果在setup.py里面指定zipfile=None参数,依赖库就会被打包到exe文件里面,那么sys.path[0]会输出“C:\test\getpath\getpath.exe”。
2.正确的方法

但以上这些其实都不是脚本文件所在目录的位置.
比如C:\test目录下还有一个名为子的目录;C:\test目录下有getpath.py,sub目录下有sub_path.py,getpath.py调用sub_path.py;我们在C:\test下执行getpath.py。如果我们在subpath.py里面使用sys.path[0],那么其实得到的是getpath.py所在的目录路径“C:\test”,因为Python虚拟机是从getpath.py开始执行的。如果想得到subpath.py的路径,那么得这样:
os.path.splp(os.path.realpath(File)[0]

其中_文件的完整路径,但是这个变量有时候返回相对路径,有时候返回绝对路径,因此还要用_虽然是所在.py文件的完整路径,但是这个变量有时候返回相对路径,有时候返回绝对路径,因此还要用os.path.realpath()函数来处理一下。也即在这个例子里,os.path.realpath(File)输出是“C:\test\sub\sub_path.py”,而os.path.拆分(os.path.realpath(File)[0]输出才是“C:\test\sub”。
3.实例说明

总之,举例来讲,os.getcwd()、sys.path0和_、_的区别是这样的:
假设目录结构是:

C:test
[dir] getpath
[file] path.py
[dir] sub
[file] sub_path.py
然后我们在C:\test下面执行pythongetpath/path.py,这时subpath.py里面与各种用法对应的值其实是:
os.getcwd()“C:\test”,取的是起始执行目录
sys.path[0]或sys.argv[0]“C:\test\getpath”,取的是被初始执行的脚本的所在目录
拆分(os.path.realpath(File)[0]“C:\test\getpath\sub”,取的是_file_所在文件sub_path.py的所在目录

发布了27 篇原创文章 · 获赞 3 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/qq_39306047/article/details/90898415