如何在Python循环中分割文本文件内容并转为数组?
如何分割CSV文本行并完成赋值?
首先得指出你当前代码里的小问题:当你用for line in elevenbit:遍历文件的时候,已经在逐行读取内容了,这时候再调用elevenbit.readline()会直接跳过下一行,导致你只能处理文件里的偶数行,而且内层循环逐个打印字符完全没用到你想实现的split(',')功能。
下面给你两种实用的修改方案,按需选择:
方案1:直接解包到命名变量(清晰直观)
这种方式适合你明确知道每行固定有10个值的情况,直接把分割后的列表元素赋值给对应含义的变量,后续使用起来更方便:
with open("txtfile", 'r') as elevenbit: for line in elevenbit: # 先去掉行尾的换行符,再按逗号分割成列表 line_parts = line.strip().split(',') # 直接解包到对应变量(顺序要和每行的字段对应哦) stock_code, flag, date, time, open_p, high_p, low_p, close_p, volume, other = line_parts # 现在就可以用这些变量做你需要的操作了,比如打印验证 print(f"股票: {stock_code} | 日期: {date} | 收盘价: {close_p} | 成交量: {volume}")
方案2:保留列表+转换数据类型(灵活处理数值)
如果需要把字符串类型的价格、成交量转换成数值(比如float或int),可以用这种方式逐个处理:
with open("txtfile", 'r') as elevenbit: for line in elevenbit: line_parts = line.strip().split(',') # 按需转换数据类型 stock_code = line_parts[0] flag = int(line_parts[1]) date = line_parts[2] time = line_parts[3] open_p = float(line_parts[4]) high_p = float(line_parts[5]) low_p = float(line_parts[6]) close_p = float(line_parts[7]) volume = int(line_parts[8]) other = int(line_parts[9]) # 举个处理例子:计算当日振幅 amplitude = (high_p - low_p) / low_p * 100 print(f"{date} {time} 振幅: {amplitude:.2f}%")
几个小细节提醒:
line.strip()是必须的,不然每行末尾的换行符\n会被包含在最后一个元素里,导致数据出错;- 如果你的文本行里可能存在多余的空格(比如
11BIT, 0, 20110112),可以用split(', ')代替split(','),或者先清理每行的空格; - 如果后续需要批量存储这些数据,也可以把每个line_parts或者转换后的变量添加到一个大列表里,方便后续统一处理。
内容的提问来源于stack exchange,提问作者jabba
相关产品推荐
相关产品推荐

