Ile razy w bazie danych w tabeli words
w kolumnie value
występuje wyraz wirus
?
Ile razy w tekście występuje wyraz wirus
?
a = 1.00001
if(a == 1):
print("Zmienna ma wartość 1")
if(abs(a - 1) < 1e-3):
print("Zmienna ma wartość zbliżoną do 1")
np. Ruby v. 1.9.3 (i wiele późniejszych wersji)
1.9.3-p551 :001 > "Ł".downcase
=> "Ł"
1.9.3-p551 :002 >
Ruby 2.7.0
2.7.0 :001 > "Ł".downcase
=> "ł"
2.7.0 :002 >
Przykłady wieloznaczności morfologicznej
from morfeusz2 import Morfeusz
import pandas as pd
morf = Morfeusz()
forms = morf.generate("wirus")
pd.DataFrame(forms, columns=['inflected form', 'base form', 'tags', 'categories', 'misc'])
skąd pochodzą teksty?
Aa
Ile razy w tekście występuje wyrażenie wirusowe zapalenie wątroby
?
Popularne rodzaje kodowania znaków (z uwzględnieniem języka polskiego):
!cat iso-8859-2.txt
import codecs
with codecs.open("iso-8859-2.txt", 'r', 'iso-8859-2') as f:
for line in f:
print(line)
Unikod (ang. Unicode) – komputerowy zestaw znaków mający w zamierzeniu obejmować wszystkie pisma używane na świecie.
UTF-8 (ang. 8-bit Unicode Transformation Format) – system kodowania Unicode, wykorzystujący od 1 do 4 bajtów do zakodowania pojedynczego znaku, w pełni kompatybilny z ASCII.
UTF-16 (ang. 16-bit Unicode Transformation Format) – jeden ze sposobów kodowania znaków standardu Unicode (2 lub 4 bajty, <= U+10000 kodowane na 2 bajtach).
UTF-32 (ang. 32-bit unicode transformation format) – jeden ze sposobów kodowania znaków standardu Unicode (zawsze 4 bajty).
(Źródło: Wikipedia)
Wersja | Data | Publikacja | Oznaczenie | Liczba zestawów znaków | Liczba znaków | Liczba nowych znaków |
---|---|---|---|---|---|---|
13.0 | March 2020 | ISBN 978-1-936213-26-9 | ISO/IEC 10646:2020[51] | 154 | 143,859 | 5,930 added) |
from unidecode import unidecode
print(unidecode("Kaplica Sykstyńska"))
print(unidecode("Сикстинская капелла")) # cyrylica
print(unidecode("Καπέλα Σιστίνα")) # grecki
print(unidecode("西斯汀小堂")) # chiński
print(unidecode("Սիքստինյան կապելլա")) # ormiański
Kaplica Sykstynska Sikstinskaia kapella Kapela Sistina Xi Si Ting Xiao Tang Sik`stinyan kapella
import demoji
#demoji.download_codes()
demoji.findall("""
#startspreadingthenews yankees win great start by 🎅🏾 going 5strong innings with 5k’s🔥 🐂 solo homerun 🌋🌋
with 2 solo homeruns and👹 3run homerun… 🤡 🚣🏼 👨🏽⚖️ with rbi’s … 🔥🔥
🇲🇽 and 🇳🇮 to close the game🔥🔥!!!….
WHAT A GAME!!..
""")
Minimalna liczba operacji:
pojedynczego znaku, dzięki którym łańcych S1
może zostać przekształcony w łańcuch S2
.
|
|
import re
pattern = re.compile('wirus')
texts = ["wrius", "wirrus", "wirs"]
for text in texts:
match_data = pattern.search(text)
if(match_data):
print(match_data[0])
import regex
pattern = regex.compile(r'(wirus\b){e<=1}')
texts = ["virus", "wirrus", "wirusa"]
for text in texts:
match_data = pattern.search(text)
if(match_data):
print(match_data[0])
virus wirrus wirusa
import re
pattern = re.compile('łódź', re.I)
text = "Łódź to stolica województwa łódzkiego"
if(pattern.search(text)):
print("Wyrażenie zostało dopasowane")
Wyrażenie zostało dopasowane
tab = ["Poznań", "Łódź", "Andrychów"]
sorted(tab)
['Andrychów', 'Poznań', 'Łódź']
pattern = re.compile(r'\bwirus(\w*)',)
texts = ["a _wirusów", "wirusowe zapalenie wątroby", "wirusy są groźne", "koronawirus"]
for text in texts:
match_data = pattern.search(text)
if(match_data):
print(match_data[0])
wirusowe wirusy
*
– (kwantyfikator) zero lub więcej wystąpień()
– grupowanie wyrażeń dla kwantyfikatorów, alternatywy, dopasowań wstecznych|
– alternatywa – jedna opcja spośród wielu*
– zero lub więcej wystąpień (to samo co wyżej)+
– jedno lub więcej wystąpień?
– zero lub jedno wystąpienie^
– początek linii$
– koniec linii\b
– granica słowa\<
– początek słowa\>
– koniec słowa[]
– jeden ze znaków znajdujących się wewnątrz nawiasów^
– pojawiając się na początku w kontekście klasy znaków powoduje jej zanegowaniea-z
– zakres znaków (tylko wew. nawiasów kwadratowych)\w
– znak będący literą, cyfrą lub podkreśleniem\s
– znak będący białą spacją (spacja, tabulator, koniec linii, etc.)\d
– cyfra.
– dowolny znak (zazwyczaj – niebędący końcem linii)\p{L}
- litery z dowolnego alfabetu (np. a, ą, ć, ü, カ)\p{Ll}
- mała litera z dowolnego alfabetu\p{Lu}
- wielka litera z dowolnego alfabetu\X
- dowonly znak Unicode (jak .
ale automatycznie uwzględnia znaki przejścia do nowej linii)(\w+)(?= ma kota)
dopasuje się do łańcucha Ala ma kota, ale dopasowanie obejmie tylko słowo Ala.(?<!starych )(zł)
dopasuje się do łańcucha 10 złotych ale nie do łańcucha 10 starych złotych.import re
text = "aaa"
print(re.findall("aa", text))
print(re.findall("a(?=a)", text))
['aa'] ['a', 'a']
text1 = "New York"
text2 = "Yorkshire"
print(re.findall("(?<!New )York", text1))
print(re.findall("(?<!New )York", text2))
[] ['York']
re
- standardowa biblioteka - https://docs.python.org/3/library/re.htmlpip install regex
- biblioteka instalowana osobno - https://pypi.org/project/regex//a.*/
/a.*/