1. str基础
1.1 字符串定义与基本操作
字符串是 Python 中的一种数据类型,用单引号或者双引号表示,例如:
"Hello, World!"
字符串是一种不可变的序列,也就是说,不可修改其中的某一个字符,但是可以通过切片等操作获取其中的子串。
字符串有很多内置的方法,可以进行拼接、替换、分割、查找等操作,例如:
"Hello" + "World" # 字符串拼接
"Hello".replace("H", "W") # 替换字符串中的某个字符
"apple,banana,pear".split(",") # 字符串分割
"Hello".find("e") # 查找字符串中某个子串的位置
1.2 格式化字符串
在字符串中,可以使用占位符来表示一个变量,例如:
"Hello, %s" % "World" # 使用占位符 %s 表示字符串类型变量
这种方法能够完成简单的字符串格式化,但是难以处理复杂的格式化需求。为了解决这个问题,Python 3.6 引入了 f-string,例如:
name = "Alice"
age = 18
f"My name is {name}, and I am {age} years old."
f-string 使用大括号 {} 来表示变量,可以方便地引用变量的属性或者进行简单的表达式计算。
2. list基础
2.1 列表定义与基本操作
列表是 Python 中的一种数据类型,用方括号 [] 表示,可以存储任意类型的数据,例如:
[1, 2, 3] # 表示包含三个整型元素的列表
["apple", "banana", "pear"] # 表示包含三个字符串元素的列表
[1, "apple", True] # 表示包含三个不同类型的元素的列表
列表也是一种可变的序列,可以通过索引、切片等操作修改其中的元素。
列表有很多内置的方法,可以进行添加、删除、排序等操作,例如:
[1, 2, 3].append(4) # 向列表末尾添加一个元素
["apple", "banana", "pear"].remove("banana") # 从列表中删除某一个元素
[3, 1, 2].sort() # 对列表进行排序
2.2 列表生成式
列表生成式是一种非常方便的生成列表的方法,可以使用简单的表达式进行列表元素的计算,例如:
[x for x in range(10)] # 生成包含 0 到 9 的整数的列表
[x ** 2 for x in range(10)] # 生成包含 0 到 9 的整数的平方的列表
[x + y for x in [1,2,3] for y in [3,4,5]] # 生成两个列表元素之和的列表
3. 综合应用:文本生成
3.1 文本生成简介
使用 Python 可以很方便地进行文本生成,例如自动摘要、机器翻译、聊天机器人等应用。
3.2 文本生成方法
文本生成的方法有很多种,常见的有统计方法、神经网络方法等。
其中,统计方法是指利用出现频率和相邻关系等信息,生成新的文本。例如,对于一个文本,可以统计每个单词出现的次数和相邻的单词的出现情况,从而生成新的文本。
而神经网络方法则是指训练一个深度学习模型,学习文本中的结构和规律,从而生成新的文本。
3.3 文本生成实践
下面,我们使用统计方法来实现一个简单的文本生成器。
首先,我们需要准备一个语料库,即一个文本文件。这里,我们选择使用《红楼梦》作为语料库。
接着,我们需要对语料库进行预处理,将文本分割成单词列表,去除标点符号和停用词等无关信息,统计每个单词出现的次数和相邻单词的出现情况,例如:
import jieba
import re
# 读取文本文件,去除标点符号和停用词,分割成单词列表
def read_file(filename):
with open(filename, "r", encoding="utf-8") as f:
text = f.read()
text = re.sub("[^\u4e00-\u9fa5a-zA-Z0-9]", " ", text)
words = jieba.cut(text)
stopwords = set()
with open("stopwords.txt", "r", encoding="utf-8") as f:
for line in f:
stopwords.add(line.strip())
words = [word for word in words if word not in stopwords]
return words
# 统计单词出现的次数和相邻单词的出现情况
def count_words(words):
word_count = {}
for i in range(1, len(words)):
prev_word = words[i-1]
curr_word = words[i]
if prev_word not in word_count:
word_count[prev_word] = {}
if curr_word not in word_count[prev_word]:
word_count[prev_word][curr_word] = 0
word_count[prev_word][curr_word] += 1
return word_count
# 生成新的文本
def generate_text(word_count, length=100):
text = []
curr_word = "底下"
for i in range(length):
if curr_word in word_count:
next_word = max(word_count[curr_word], key=word_count[curr_word].get)
else:
next_word = "说道"
text.append(next_word)
curr_word = next_word
return "".join(text)
最后,我们可以调用上述函数来生成新的文本:
words = read_file("hongloumeng.txt")
word_count = count_words(words)
text = generate_text(word_count)
print(text)
使用上述方法生成的新文本可能不太准确,但是可以作为一种简单的文本生成方法,并且能够增加程序的趣味性。
4. 总结
本文介绍了 Python 中的字符串和列表两种基本数据类型,以及文本生成的方法和实践。
字符串可以用于存储和操作文本信息,可以使用格式化字符串等方法方便地进行文本处理。
列表可以用于存储和操作一组数据,可以使用列表生成式等方法方便地生成和处理列表。
文本生成可以使用统计方法或者神经网络方法,实现自动摘要、机器翻译、聊天机器人等应用。