Python. Строки

Содержание

Слайд 2

Найдите все составные числа меньшие N, которые представимы в виде произведения двух простых чисел.

Найдите все составные числа меньшие N, которые представимы в виде произведения

двух простых чисел.
Слайд 3

#!/usr/bin/env python def primes(N): l = list(range(2,N)) for x in l:

#!/usr/bin/env python
def primes(N):
l = list(range(2,N))
for x in l:
n

= x
while x*n <= N:
if x * n in l:
remove(x*n)
n+=1
return l
def doublePrimes(N):
ps = primes(N)
out = []
for prime in ps:
for otherprime in ps[ps.index(prime):]:
doublePrime = prime*otherprime
if doublePrime < N:
out.append(tuple([prime, otherprime, doublePrime]))
else:
break
return out
print "Prime multiples under 100"
print doublePrimes(100)
Слайд 4

Python Строки…

Python

Строки…

Слайд 5

Unicode & UTF-8 ЭТО РАЗНЫЕ ВЕЩИ!!!

Unicode & UTF-8

ЭТО РАЗНЫЕ ВЕЩИ!!!

Слайд 6

Создание строк ’I am a string’ ”I too” ’ ’ ’Do

Создание строк

’I am a string’
”I too”
’ ’ ’Do not forget about

me! ’ ’ ’
”””I am a pretty multiline
string!”””
str([1, 2])
str({‘x’: 1})
”Don’t forget about me!”
Слайд 7

Экранированные символы \\ \’ \” \n \t \uxxxx \Uxxxxxxxx

Экранированные символы

\\
\’
\”
\n
\t
\uxxxx
\Uxxxxxxxx

Слайд 8

Сырые строки r”Строка” – не экранируются символы >>> s = "\t"

Сырые строки

r”Строка” – не экранируются символы
>>> s = "\t"
>>> print(s)
>>> s
'\t'
>>>

s = r"\t"
>>> print(s)
\t
>>> s
'\\t'
Слайд 9

Извлечение данных >>> s = "It's interesting lecture!" >>> "lecture" in

Извлечение данных

>>> s = "It's interesting lecture!"
>>> "lecture" in s
True
>>> s.index("s")
3
>>>

s.find("s")
3
>>> s.index("!!")
Traceback (most recent call last):
File "", line 1, in ?
ValueError: substring not found
>>> s.find("!!")
-1
Слайд 10

«Изменчивость» строк Строки не изменяемы! >>> s = "It's interesting lecture!"

«Изменчивость» строк

Строки не изменяемы!
>>> s = "It's interesting lecture!"
>>> s
"It's interesting

lecture!"
>>> s[4]
' '
>>> s[4]='_'
Traceback (most recent call last):
File "", line 1, in ?
TypeError: object doesn't support item assignment
Слайд 11

Срезы S = “Python” S[Start:Finish:Step] S[:] #Python “J”+S[1:] #Jyton S[:-1] #Pytho S[::-1] #nohtyP

Срезы

S = “Python”
S[Start:Finish:Step]
S[:] #Python
“J”+S[1:] #Jyton
S[:-1] #Pytho
S[::-1] #nohtyP

Слайд 12

Форматирование строк “%s” % 10 # 10 “%s - %s -

Форматирование строк

“%s” % 10 # 10
“%s - %s - %s” %

(10, 20, 30)
“%(x)s - %(b)s” % {“x” : 19, “b” : “Dad”}
“%10d” % 2 # 2
Слайд 13

Модификация >>> s = " \n\t It's interesting lecture! \n\t\r" >>>

Модификация

>>> s = " \n\t It's interesting lecture! \n\t\r"
>>> s
" \n\t

It's interesting lecture! \n\t\r"
>>> print(s)
It's interesting lecture!
>>> s.upper();
" \n\t IT'S INTERESTING LECTURE! \n\t\r"
>>> s.lower()
" \n\t it's interesting lecture! \n\t\r"
>>> s.lstrip()
"It's interesting lecture! \n\t\r"
>>> s.rstrip()
" \n\t It's interesting lecture!"
>>> s.strip()
"It's interesting lecture!"
Слайд 14

Модификация Команды strip, lstrip, rstrip, upper, lower возвращают НОВУЮ строку. НО!

Модификация

Команды strip, lstrip, rstrip, upper, lower возвращают НОВУЮ строку.
НО!
>>> s =

s.strip()
>>> s
"It's interesting lecture!"
Слайд 15

Модификация >>> xmltags = " 111 222 " >>> xmltags.strip(" ");

Модификация

>>> xmltags = "111222"
>>> xmltags.strip("<>");
'a>111222>>> xmltags.strip("");
'b>111222'
>>> xmltags.strip("");
'111222'

Слайд 16

Извлечение данных >>> s = "a,b,cccc,d" >>> s.split(","); ['a', 'b', 'cccc',

Извлечение данных

>>> s = "a,b,cccc,d"
>>> s.split(",");
['a', 'b', 'cccc', 'd']
>>> s.split(", ");
['a,b,cccc,d']
>>>

s.split(",", 2);
['a', 'b', 'cccc,d']
Слайд 17

Join >>> some_list = ['one', 'two', 'three'] >>> ', '.join(some_list) 'one,

Join

>>> some_list = ['one', 'two', 'three']
>>> ', '.join(some_list)
'one, two, three'
>>> ''.join(some_list)
'onetwothree'
>>>

some_list2 = [1, 2, 3]
>>> ', '.join(some_list2)
Traceback (most recent call last):
File "", line 1, in ?
TypeError: sequence item 0: expected string, int found
>>> ', '.join([str(i) for i in some_list2])
'1, 2, 3'
Слайд 18

Проверка типа содержимого S.isdigit() S.isalpha() …. S.istitle()

Проверка типа содержимого

S.isdigit()
S.isalpha()
….
S.istitle()

Слайд 19

Unicode (Python 2) >>> u"Привет" u'\xf0\xd2\xc9\xd7\xc5\xd4' >>> unicode("Привет", "koi8-r") u'\u041f\u0440\u0438\u0432\u0435\u0442' >>>

Unicode (Python 2)

>>> u"Привет"
u'\xf0\xd2\xc9\xd7\xc5\xd4'
>>> unicode("Привет", "koi8-r")
u'\u041f\u0440\u0438\u0432\u0435\u0442'
>>> s = unicode("Привет", "koi8-r")
>>> print

s.encode("utf-8")
п÷я─п╦п╡п╣я┌
>>> print s.encode("koi8-r")
Привет
Слайд 20

Regexp >>> import re >>> regexp = "{{(.*?)}}" >>> str =

Regexp

>>> import re
>>> regexp = "{{(.*?)}}"
>>> str = "{{this}} is {{strange}}

string"
>>> for match in re.findall(regexp, str):
... print "FIND: ", match
...
FIND: this
FIND: strange
Слайд 21

Regexp - compiled >>> import re >>> regexp = re.compile("{{(.*?)}}") >>>

Regexp - compiled

>>> import re
>>> regexp = re.compile("{{(.*?)}}")
>>> str = "{{this}}

is {{strange}} string"
>>> for match in regexp.findall(str):
... print "FIND: ", match
...
FIND: this
FIND: strange
Слайд 22

Regexp finditer match search

Regexp

finditer
match
search

Слайд 23

Чтение из файла >>> file_in = open("test.txt", "r") Traceback (most recent

Чтение из файла

>>> file_in = open("test.txt", "r")
Traceback (most recent call last):

File "", line 1, in ?
IOError: [Errno 2] No such file or directory: 'test.txt'
>>> file_in = open("foo.txt", "r")
>>> str = file_in.read()
>>> print str
Hello
i am
pretty
file!
>>> str.split()
['Hello', 'i', 'am', 'pretty', 'file!']
>>> str.splitlines()
['Hello', 'i am', 'pretty ', 'file!']
Слайд 24

Запись в файл >>> file_out = open("test.txt", "w") >>> file_out.write("Test file\nNew

Запись в файл

>>> file_out = open("test.txt", "w")
>>> file_out.write("Test file\nNew line");
>>> file_out.close()
>>>

try:
... f = open("file.txt", "w")
... f.write("test")
... finally:
... f.close()
Слайд 25

Работа с файлами файла - 2 read(size) readline(size) readlines(size) writelines

Работа с файлами файла - 2

read(size)
readline(size)
readlines(size)
writelines

Слайд 26

Стандартный ввод и вывод #!/usr/bin/env python import sys counter = 1

Стандартный ввод и вывод

#!/usr/bin/env python
import sys
counter = 1
while True:
line = sys.stdin.readline()
if

not line:
break
print ”%s: %s” % (counter, line)
counter += 1
Слайд 27

Стандартный ввод import sys for I, line in enumerate(sys.stdin): print “%s: %s” % (I, line) sys.stdout.write(“OK!”)

Стандартный ввод

import sys
for I, line in enumerate(sys.stdin):
print “%s: %s” % (I,

line)
sys.stdout.write(“OK!”)
Слайд 28

StringIO >>> from StringIO import StringIO >>> str = StringIO("aaaa"); >>>

StringIO

>>> from StringIO import StringIO
>>> str = StringIO("aaaa");
>>> str.read()
'aaaa'
>>> str.write("bbbb")
>>> str

instance at 0xb7d52acc>
>>> print str

>>> str.getvalue()
'aaaabbbb'
Слайд 29

Urllib >>> import urllib >>> url_file = urllib.urlopen("http://spbau.ru") >>> url_file.read(100) ' >>>

Urllib

>>> import urllib
>>> url_file = urllib.urlopen("http://spbau.ru")
>>> url_file.read(100)
'

1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-str'
>>>