第3章:Python快速上手——变量与数据类型、字符串操作、列表与字典、元组与集合、输入输出

好,咱们直接进入正题。Python 这东西,说白了就是 RPA 开发者的瑞士军刀。你想想看,一个自动化脚本里,80% 的工作都在跟数据打交道——抓数据、存数据、改数据、写数据。所以这一章,我带你把这些基础操作彻底吃透。

3.1 变量与数据类型——先搞清楚你手里拿的是什么

变量就是个标签。你把数据贴个名字,方便后面用。Python 不用声明类型,直接赋值就行。我个人习惯用有意义的英文名,比如 user_name 而不是 a,不然代码过两周自己都看不懂。

# 常见数据类型
name = "张三"        # 字符串
age = 28             # 整数
salary = 8500.50     # 浮点数
is_active = True     # 布尔值

嗯,这里要注意:Python 里 TrueFalse 首字母必须大写。我在项目中遇到过有人写小写 true,结果程序直接报错,排查了半天。

小技巧:type() 函数随时检查变量类型。调试时特别好用。

3.2 字符串操作——RPA 里最常用的技能

字符串操作在 RPA 里太常见了。从网页抓下来的文本、Excel 里的单元格内容、弹窗里的提示信息……全是字符串。说白了,你每天就是在跟字符串打交道。

3.2.1 拼接与格式化

# 三种拼接方式
first = "张"
last = "三"
full = first + last          # 用加号
full2 = f"{first}{last}"     # f-string,我最推荐
full3 = "{} {}".format(first, last)  # format 方法

我个人强烈推荐 f-string。简洁、直观、性能也好。你看上面那个例子,f-string 一眼就能看出变量插在哪里。

3.2.2 常用方法

方法 作用 示例
strip() 去除首尾空格 " hello ".strip()"hello"
split() 按分隔符拆分 "a,b,c".split(",")["a","b","c"]
replace() 替换子串 "hello".replace("l","x")"hexxo"
find() 查找子串位置 "hello".find("e")1
避坑指南:我曾经在解析 CSV 文件时,直接用 split(",") 拆分,结果某个字段里包含逗号,数据全乱了。后来改用 csv 模块才解决。记住:简单的数据用 split,复杂的数据用专业库。

3.3 列表与字典——RPA 数据的两大容器

列表和字典,你几乎每天都会用到。列表存有序数据,字典存键值对。我习惯把列表比作「排队买票的队伍」,字典比作「带标签的抽屉」。

3.3.1 列表操作

# 创建列表
fruits = ["苹果", "香蕉", "橘子"]

# 增删改查
fruits.append("葡萄")      # 末尾添加
fruits.insert(1, "草莓")   # 指定位置插入
fruits.remove("香蕉")      # 删除指定元素
popped = fruits.pop()      # 弹出最后一个
fruits[0] = "西瓜"         # 修改

# 列表推导式——我特别喜欢用
numbers = [1, 2, 3, 4, 5]
squares = [n**2 for n in numbers]  # [1, 4, 9, 16, 25]

列表推导式这玩意儿,一开始看着有点别扭,但用顺了真香。我在项目中处理几百个文件路径时,一行列表推导式就搞定了,比写 for 循环清爽太多。

3.3.2 字典操作

# 创建字典
user = {
    "name": "张三",
    "age": 28,
    "city": "北京"
}

# 访问与修改
print(user["name"])        # 张三
user["age"] = 29           # 修改
user["phone"] = "138xxxx"  # 新增

# 安全获取——避免 KeyError
phone = user.get("phone", "未设置")
重点:get() 方法代替直接索引,可以避免键不存在时报错。这在处理不确定的数据源时特别重要。

3.4 元组与集合——两个被低估的数据类型

元组和集合,很多新手不太用。但我觉得它们各有妙用,用对了能省不少事。

3.4.1 元组——不可变的列表

# 元组用圆括号
colors = ("红", "绿", "蓝")
# colors[0] = "黄"  # 这行会报错!元组不可修改

# 解包——超好用
r, g, b = colors
print(r)  # 红

元组不可变,意味着更安全。我在项目中用元组存配置参数,比如数据库连接信息,防止不小心被修改。另外,元组可以作为字典的键,列表不行。

3.4.2 集合——去重利器

# 集合用花括号,但没冒号
ids = [101, 102, 103, 101, 102]
unique_ids = set(ids)  # {101, 102, 103}

# 集合运算
a = {1, 2, 3}
b = {2, 3, 4}
print(a & b)   # 交集 {2, 3}
print(a | b)   # 并集 {1, 2, 3, 4}
print(a - b)   # 差集 {1}
实用场景:从 Excel 里读取一列数据,用 set() 去重,一秒搞定。比写循环判断快多了。

3.5 输入输出——让程序跟外界对话

RPA 程序不是孤岛,它得跟用户、文件、系统交互。输入输出就是这座桥。

3.5.1 控制台输入输出

# 输出
print("开始执行自动化流程...")
print(f"当前处理第 {page} 页")  # f-string 输出

# 输入
user_input = input("请输入要处理的文件路径:")
print(f"你输入的是:{user_input}")

嗯,这里要注意:input() 返回的永远是字符串。如果你要数字,记得转换:int(input(...))。我曾经在写计算器脚本时忘了转换,结果 5 + 3 变成了 "53",尴尬。

3.5.2 文件读写——RPA 的核心能力

# 写文件
with open("output.txt", "w", encoding="utf-8") as f:
    f.write("第一行内容\n")
    f.write("第二行内容\n")

# 读文件
with open("output.txt", "r", encoding="utf-8") as f:
    content = f.read()        # 全部读取
    lines = f.readlines()     # 按行读取为列表
避坑指南:我曾经在写文件时忘了指定 encoding="utf-8",结果中文全变成了乱码。记住:只要涉及中文,一定要加 encoding="utf-8"。另外,with 语句会自动关闭文件,别用老式的 f.open() 然后忘了 f.close()

3.6 综合小案例——用 Python 处理 RPA 日志

光说不练假把式。咱们来个实际场景:假设你有一个日志文件,里面记录了 RPA 流程的执行结果,你需要统计成功和失败的数量。

# 模拟日志数据
log_data = """2024-01-15 10:00:01,流程A,成功
2024-01-15 10:00:05,流程B,失败
2024-01-15 10:00:10,流程A,成功
2024-01-15 10:00:15,流程C,成功
2024-01-15 10:00:20,流程B,失败"""

# 按行拆分
lines = log_data.strip().split("\n")

# 统计
success = 0
fail = 0
for line in lines:
    parts = line.split(",")
    status = parts[2].strip()
    if status == "成功":
        success += 1
    elif status == "失败":
        fail += 1

print(f"成功:{success} 次,失败:{fail} 次")
# 输出:成功:3 次,失败:2 次

你看,这一小段代码就用到了字符串拆分、列表遍历、条件判断、f-string 输出。这就是 RPA 开发的日常——把零散的数据整理成有用的信息。

总结一下:变量是基础,字符串是日常,列表和字典是主力,元组和集合是奇兵,输入输出是桥梁。把这些玩熟了,RPA 开发的基本功就算打牢了。

下一章咱们聊函数和模块——怎么把代码组织得井井有条。到时候见。