3、Python基础速通(上):变量、数据类型、列表、字典、字符串操作
各位同学,欢迎来到第三章。
说实话,很多做量化的人,一上来就急着写策略、调参数,结果连个字符串都拼接不好,最后跑出来的数据全是乱码。我见过太多这样的案例了。所以,咱们先把地基打牢。
这一章,我带你快速过一遍Python最核心的基础知识。别担心,我不会让你死记硬背。咱们的目标是:够用就行,实战优先。
本章核心知识点一览:
- 变量与数据类型:搞懂Python怎么存数据
- 列表与字典:量化分析中最常用的两种数据结构
- 字符串操作:处理新闻文本的基本功
3.1 变量与数据类型:Python的"收纳盒"
变量是什么?说白了,就是给数据贴个标签。你不需要告诉计算机「这个数据要放在内存的哪个位置」,你只需要给它起个名字就行。
我个人习惯用snake_case命名变量,比如news_title、sentiment_score。别用拼音,也别用a、b、c这种毫无意义的命名。你想想看,三个月后回头看自己的代码,看到a = 0.85,你还能记得它代表什么吗?
我的小习惯:变量名要能"自解释"。比如positive_count比pc好一万倍。
Python里最常用的数据类型就这几种:
| 类型 | 例子 | 说明 |
|---|---|---|
int |
100 |
整数,比如新闻的阅读量 |
float |
3.14159 |
浮点数,比如情感得分 |
str |
"今天股市大涨" |
字符串,新闻文本的主力 |
bool |
True / False |
布尔值,判断条件用 |
# 实战中的变量声明
news_title = "美联储加息预期升温"
sentiment_score = -0.35
is_positive = False
print(type(sentiment_score)) # 输出:<class 'float'>
注意:Python是动态类型语言,变量类型可以随时改变。但我不建议你这么做。我曾经在项目中看到有人把同一个变量名先当字符串用,后来又当列表用,结果调试了一整天。保持类型一致,是专业素养的体现。
3.2 列表:有序的"购物车"
列表就是一组有序的数据集合。在量化分析里,我们经常用它来存储一系列新闻标题、一组股票代码,或者一段时间内的情感得分。
# 创建一个新闻标题列表
headlines = ["股市收评", "科技板块领涨", "北向资金流入"]
print(headlines[0]) # 输出:股市收评
print(headlines[-1]) # 输出:北向资金流入(负索引从末尾开始)
嗯,这里要注意。列表的索引是从0开始的。很多新手会犯这个错,我刚开始学的时候也踩过这个坑。
列表的常用操作:
# 增
headlines.append("新能源政策利好") # 末尾添加
headlines.insert(1, "金融板块异动") # 指定位置插入
# 删
headlines.remove("股市收评") # 按值删除
popped = headlines.pop() # 弹出最后一个元素
# 改
headlines[0] = "科技板块领涨A股"
# 查
if "北向资金流入" in headlines:
print("这条新闻在列表中")
# 切片(取前两条)
top_two = headlines[:2]
print(top_two)
实战场景:我在做新闻情感分析时,经常用列表来存储每一条新闻的情感得分,然后计算平均值,判断整体市场情绪是偏多还是偏空。
3.3 字典:键值对的"通讯录"
如果说列表是按位置查找,那字典就是按名字查找。每个元素都有一个唯一的"键"(key)和对应的"值"(value)。
我个人觉得,字典是Python里最优雅的数据结构之一。它特别适合存储有明确属性的数据,比如一条新闻的完整信息。
# 用字典存储一条新闻
news_item = {
"title": "美联储加息预期升温",
"source": "财联社",
"sentiment": -0.35,
"publish_time": "2024-01-15 09:30",
"keywords": ["加息", "美联储", "货币政策"]
}
# 访问字典的值
print(news_item["title"]) # 输出:美联储加息预期升温
print(news_item.get("author", "未知")) # 安全访问,不存在时返回默认值
字典的增删改查:
# 增
news_item["author"] = "张三"
# 删
del news_item["keywords"]
# 改
news_item["sentiment"] = -0.42
# 查
if "source" in news_item:
print(f"来源:{news_item['source']}")
# 遍历字典
for key, value in news_item.items():
print(f"{key}: {value}")
避坑指南:我曾经在项目中直接用news_item["author"]去访问一个不存在的键,结果程序直接崩溃了。后来我养成了习惯,一律用.get()方法,或者先判断键是否存在。这个习惯救了我很多次。
3.4 字符串操作:文本处理的基本功
做新闻量化分析,字符串操作是躲不开的。你要清洗文本、提取关键词、拼接报告……这些全都离不开字符串。
字符串拼接:
# 老式拼接(不推荐)
title = "今日股市"
result = title + ":上证指数上涨0.5%"
# f-string(推荐,Python 3.6+)
index_name = "上证指数"
change = 0.5
result = f"{title}:{index_name}上涨{change}%"
print(result) # 输出:今日股市:上证指数上涨0.5%
我个人强烈推荐使用f-string。它比+拼接更清晰,比%格式化更直观。你想想看,如果要在字符串里嵌入五六个变量,用+拼起来得多痛苦?
字符串分割与替换:
# 分割
text = "苹果,微软,谷歌,亚马逊"
companies = text.split(",")
print(companies) # 输出:['苹果', '微软', '谷歌', '亚马逊']
# 替换
raw_text = "今天股市大跌,投资者恐慌"
cleaned = raw_text.replace("大跌", "波动")
print(cleaned) # 输出:今天股市波动,投资者恐慌
去除空白与大小写转换:
# 去除首尾空格
user_input = " 美联储 "
clean_input = user_input.strip()
print(clean_input) # 输出:美联储
# 大小写转换(处理英文新闻时常用)
headline = "fed raises interest rates"
print(headline.upper()) # 输出:FED RAISES INTEREST RATES
print(headline.title()) # 输出:Fed Raises Interest Rates
我的经验:在清洗新闻文本时,我通常会先做strip()去除首尾空格,然后用replace()去掉一些特殊符号,最后再用split()分词。这个流程基本能处理90%的文本清洗需求。
3.5 综合实战:构建一条新闻的情感记录
好了,我们把今天学的知识串起来,写一个完整的例子。
# 模拟从API获取的原始新闻数据
raw_data = " 美联储加息预期升温,财联社,2024-01-15,-0.35 "
# 1. 清洗字符串
cleaned_data = raw_data.strip()
# 2. 分割成列表
fields = cleaned_data.split(",")
print(fields) # 输出:['美联储加息预期升温', '财联社', '2024-01-15', '-0.35']
# 3. 构建字典
news_record = {
"title": fields[0],
"source": fields[1],
"date": fields[2],
"sentiment": float(fields[3]) # 字符串转浮点数
}
# 4. 判断情感倾向
if news_record["sentiment"] > 0:
news_record["label"] = "正面"
elif news_record["sentiment"] < 0:
news_record["label"] = "负面"
else:
news_record["label"] = "中性"
# 5. 用f-string输出报告
report = f"""
新闻标题:{news_record['title']}
来源:{news_record['source']}
日期:{news_record['date']}
情感得分:{news_record['sentiment']}
情感标签:{news_record['label']}
"""
print(report)
这个例子虽然简单,但它涵盖了变量、列表、字典、字符串操作的所有核心知识点。你在后续的课程中会反复用到这个模式。
总结一下:
- 变量是数据的标签,命名要清晰
- 列表适合存储有序的数据序列
- 字典适合存储有键值对关系的数据
- 字符串操作是文本处理的基础,f-string是你的好朋友
好了,这一章的内容就到这里。别急着往下走,先把上面的代码自己敲一遍。代码这东西,看十遍不如写一遍。