如何用Python从CSV文件列的字符串中提取整数?
问题解决:从CSV列提取整数并打印
原代码的核心问题
- 遍历DataFrame方式错误:
for row in df只会遍历列名(此处就是"A"),根本没拿到每行的实际数据 - 判断条件完全不符:你写的
row == ('NSIT ,A: ,')和CSV里的实际行内容(比如" NSIT ,A: ,-213")完全不匹配,所以不会进入任何分支 - 缺少整数提取逻辑:没有对字符串做分割、清理和类型转换的处理
- 未处理空行:CSV里的空行会导致后续处理出错
修正方案1:用Pandas向量操作(高效简洁)
这种方法利用Pandas的字符串处理能力,批量处理整列数据:
import pandas as pd # 读取CSV,跳过空行,指定列名为"A" df = pd.read_csv("T4.csv", names=["A"], skip_blank_lines=True) # 清理字符串并提取整数: # 1. 去掉每行前后的空白字符 # 2. 按逗号分割字符串 # 3. 取最后一个部分(整数所在的位置) # 4. 再次清理空白后转成整数类型 df['extracted_int'] = df['A'].str.strip().str.split(',').str[-1].str.strip().astype(int) # 提取A/B标识并打印结果 for _, row in df.iterrows(): # 从分割后的第二部分提取A/B(去掉冒号和空白) label = row['A'].strip().split(',')[1].strip().replace(':', '') print(f"{label}: {row['extracted_int']}")
修正方案2:逐行遍历处理(适合新手理解)
如果想更直观地看到每一步的处理逻辑,可以用逐行循环:
import pandas as pd csv_files = ["T4.csv"] for file_name in csv_files: # 读取文件时跳过空行,避免处理空内容 df = pd.read_csv(file_name, names=["A"], skip_blank_lines=True) # 遍历A列的每一行内容 for line_content in df['A']: # 第一步:去掉字符串前后的空格、换行符 cleaned_line = line_content.strip() # 第二步:按逗号分割成多个部分 parts = cleaned_line.split(',') # 第三步:提取整数部分(最后一个元素)并转成int integer = int(parts[-1].strip()) # 第四步:提取A/B标识(第二个元素去掉冒号) label = parts[1].strip().replace(':', '') # 打印结果 print(f"{label}: {integer}")
运行结果
两种方案都会输出:
A: -213 A: -43652 B: -39 A: -2 B: -46
内容的提问来源于stack exchange,提问作者Lilfio
相关产品推荐
相关产品推荐

