Python implementa estadísticas de palabras para las novelas de Harry Potter


Afirmar

Cuente la frecuencia de palabras de las novelas en inglés HarryPotter5.txt, cuente las 20 palabras más frecuentes e imprímalas o escríbalas en archivos


Uno, abre el archivo

Abra el archivo y reemplace los caracteres que no son palabras en la palabra con espacios
Código:

#读取小说内容
fp = open('HarryPotter5.txt')
content = fp.read()
#所有标点符号 用空格代替
#匹配非单词字符的字符
content = re.sub('\W',' ',content)
# Python split() 通过指定分隔符对字符串进行切片
words = content.split() # 以空格为分隔符,包含 \n

Expresión regular

Regular re

\ W
__ coincide con caracteres que no son caracteres de palabra. _ Esto es lo contrario. Si se usa la bandera ASCII, esto equivale a [^ a-zA-Z0-9 ]. Si se usa la bandera LOCALE, coincidirá con los caracteres que no son alfanuméricos ni subrayados en la región actual.

función derramada ()

Python split () divide la cadena especificando el separador. Si el parámetro num tiene un valor especificado, separe las subcadenas num + 1
str.split (str = "", num = string.count (str)).
   str-Separator, el valor predeterminado son todos los caracteres vacíos, incluidos espacios, líneas nuevas (\ n), tabulaciones (\ t), etc.
   num-el número de divisiones. El valor predeterminado es -1, que separa todos

Ejemplo

str = "Line1-abcdef \nLine2-abc \nLine4-abcd";
print str.split( );       # 以空格为分隔符,包含 \n
print str.split(' ', 1 ); # 以空格为分隔符,分隔成两个

El resultado del ejemplo anterior es el siguiente:

['Línea1-abcdef', 'Línea2-abc', 'Línea4-abcd']
['Línea1-abcdef', '\ nLínea2-abc \ nLínea4-abcd']

El siguiente ejemplo utiliza el signo # como separador, especifica el segundo parámetro como 1 y devuelve dos listas de parámetros.

txt = "Google#Runoob#Taobao#Facebook"
# 第二个参数为 1,返回两个参数列表
x = txt.split("#", 1)
print x

El resultado del ejemplo anterior es el siguiente:

['Google', 'Runoob # Taobao # Facebook']


2. Estadísticas de frecuencia de palabras

El código es el siguiente (ejemplo):

#对所有的单词出现次数进行统计
#key-->count  数据结构:Dict字典
wordCounter = {
    
    }
for word in words:
    if word in wordCounter:
        wordCounter[word] += 1
    else:
        wordCounter[word] = 1
#print(wordCounter)

#Esta impresión no está en orden y debe ordenarse ordenada


Tres, clasificación de palabras

El código es el siguiente (ejemplo):

#默认按照增序  使用reverse参数改变顺序
sortedWordCounter = sorted(wordCounter.items(),key=lambda item: item[1],reverse=True)
#print(sortedWordCounter) #这是打印排序完毕的词频

La capa inferior del diccionario Dict es una estructura hash. La estructura hash no admite ordenar
wordCounter.items () y reemplazarlo
con una lista. Cada elemento de esta lista es una tupla
. Hay dos elementos en la tupla. El primero elemento es la clave. El segundo elemento es el valor

El efecto es el siguiente:
Inserte la descripción de la imagen aquí

Explicar elemento lambda: elemento [1]:
Equivale a definir una función lambda, que es equivalente a una función anónima. El
efecto es el siguiente
lambda item: item [1]: before es el parámetro: after es el valor de retorno

def func(item):
    return item[1]

Una función anónima tiene el mismo efecto que una función normal, excepto que no tiene nombre.


Cuatro, archivos de salida o escritura

El código es el siguiente (ejemplo):

#方法一
print(sortedWordCounter[:20])
#方法二
for item in sortedWordCounter[:20]:
    print(item)
#也可以写入文件
fp = open('countwords_result.csv','w')
for (word,count) in sortedWordCounter:
    line = word+','+str(count)+'\n'
    fp.write(line)

Inserte la descripción de la imagen aquí

Crea el tuyo propio después de correr
Inserte la descripción de la imagen aquí

escritura de archivo python

Escribir en un archivo existente
Para escribir en un archivo existente, debe agregar parámetros a la función open ():
   "a" -append-se agregará al final del archivo
   "w" -write-sobrescribirá cualquier contenido existente
Anotación: El método "W" cubrirá todo el contenido.

#打开文件 "demofile2.txt" 并将内容追加到文件中:

f = open("demofile2.txt", "a")
f.write("Now the file has more content!")
f.close()

# 追加后,打开并读取该文件:
f = open("demofile2.txt", "r")
print(f.read())
#打开文件 "demofile3.txt" 并覆盖内容:

f = open("demofile3.txt", "w")
f.write("Woops! I have deleted the content!")
f.close()

# 写入后,打开并读取该文件:
f = open("demofile3.txt", "r")
print(f.read())

Para crear un nuevo archivo en Python, use el método open () y use uno de los siguientes parámetros:
   "x" -create-se creará un archivo, si el archivo existe, se devolverá un error
   "a" -append- si el archivo especificado no existe, se creará un archivo
   "w" -escribir-si el archivo especificado no existe, se creará un archivo

#创建名为 "myfile.txt" 的文件:
f = open("myfile.txt", "x")
#结果:已创建新的空文件!

#如果不存在,则创建新文件:
f = open("myfile.txt", "w")

Supongo que te gusta

Origin blog.csdn.net/HG0724/article/details/112298542
Recomendado
Clasificación