java拆分读取txt字段_手把手教你用python读取文件和处理文本(附完整代码)

本文详细介绍了如何使用Python进行文本处理,包括打开文件、读取内容和处理文本的基本步骤。通过open()函数打开文件,使用for循环读取内容,并利用if条件句、strip()、split()等方法处理文本。讲解了从去除首行特定标识、空行到按分隔符拆分存储数据的过程,最后展示了将处理结果追加到列表的完整代码示例。
摘要由CSDN通过智能技术生成

f1cdd9941ee5714278fa20d59db6194b.gif

    如果遇到用python处理文本的需求,那么首先需要先打开文件,读取里面的内容,再对文本进行处理。     今天讲的虽然是基本操作,但万丈高楼平地起,基本功也是很重要滴~用python读取文件和处理文本的基本思路如下: 96d917b21990791320bb69a5dbe50549.png python读取文件的流程图     我们将对python读取文件的三个步骤进行逐一分解。

分解动作1:打开文件

    Python 打开文件 的时候需要用到 open()函数 ,其具体的使用语法如下:

open(file, mode='r', buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None)

每个参数的解释说明如下:
  • file is either a text or byte string giving the name (and the path if the file isn't in the current working directory) of the file to be opened or an integer file descriptor of the file to be wrapped.

  • mode is an optional string that specifies the mode in which the file is opened.

  • buffering is an optional integer used to set the buffering policy.

  • encoding is the name of the encoding used to decode or encode the file.

  • errors is an optional string that specifies how encoding errors are to be handled---this argument should not be used in binary mode.

  • newline controls how universal newlines works (it only applies to text mode).

  • If closefd is False, the underlying file descriptor will be kept open when the file is closed.

  • A custom opener can be used by passing a callable as *opener*.

     其中,常用的两个参数:file需要给出具体文件的路径、mode表示选择模式如读取“r”或“w”写等。mode的可选择项如下:

'r'- open for reading (default)

'w'- open for writing, truncating the file first

'x'- create a new file and open it for writing

'a'- open for writing, appending to the end of the file if it exists

'b'- binary mode

't'- text mode (default)

'+'- open a disk file for updating (reading and writing)

'U'- universal newline mode (deprecated)

【用open()函数造句】:

f = open("/file/c/data.txt", mode='r')

代码释义:打开位于/file/c的data.txt文件,打开模式为可读。

    这样一个文件就被打开啦~打开后的文件需要赋值一个变量,接下来只要从这个变量里循环读取文本就可以了。

分解动作2:读取文本

     打开文件后接下来读取文件,其解决办法是用 for循环读取文件 。for循环语法如下:
for iterating_var in sequence:
statements(s)

【for循环造句】:

for line in f:     (……) 代码释义 :从f中循环读取,每迭代一行,变量为line。

分解动作3:处理文本

     读取文件的具体内容如下: b0589cdb7d66477271d83e231fc26140.png 读取文件截图     处理文本方式有多种,如处理开头或空行、去掉每行末尾换行符、对每行“切分”处理、整理追加元素等。本文介绍常见的4种方式。 step 1、是否处理开头     关于文本开头的处理,如首行以“#”开头、文本中有空行、需要跳过某些指定行等。这里需要用到 if条件句 对其进行处理,其使用语法如下:
if 判断条件1:

执行语句1……

elif 判断条件2:

执行语句2……

elif 判断条件3:

执行语句3……

else:

执行语句4……    if条件句的逻辑是:如果判断条件1为True,则执行“执行语句1”的代码;如果条件判断1为False,则执行elif的判断条件2,以此类推。当判断条件1-3均不满足时,则执行else的“执行语句4”。 【if条件句造句】: if line.startswith("#") or line.strip() == '':     continue 代码释义 :如果每行以“#”开头,或者有空行,则跳过该行,进入下一个循环,读取下一行。 *知识点* 1、 startswith() 表示以…开头。同理,以…结尾用endswith()表示。 2、 strip() 表示去掉开头或末尾指定字符,默认字符为换行符\n或空格。 3、 continue 表示跳出本次循环,进入下一循环。扩展知识:break,表示跳出整个循环,即终止循环。     如果不用strip()的话,你得到的每行实际是两行,即原来的文本行+1个新空行。大家可以自行测试一下。 a0a59ec080ef95f1b66f7c10b301d60f.png 不加strip()将得到文本行+空行     也许你会好奇,为什么是line.strip()或者line.startswith(),为什么变量和函数用“.”连接?因为这是针对这个变量的操作,也就是仅对line变量进行strip()或startswith()操作,而不是其他变量。 step 2、拆分每行     基本思路:将每行按照分隔符拆分,将拆分后的元素存储在数组中。 拆分 用到的函数是 split() ,括号内可以提供具体分隔符,如'\t'制表符等。 【split()造句】: array = line.strip().split('\t') 代码释义:先将变量line去掉\n换行符(由strip()操作),再将变量line按照\t的分隔符进行切片操作(由split()操作),将“切”下来的每个元素存储到变量array的数组中。这里数组表示列表(list)的意思。     也许你会问能不能将line.strip().split()写成line.split().strip()呢?建议不要这样写,因为python是从左向右读取代码并执行操作的。一般先要将每行句尾换行符去掉再进行“切片”操作。 step 3、定义数组元素     我们将上面数组array中的某个元素提出来,将其赋值为我们需要的变量,如变量province等。 【变量赋值造句】: province = array[0] 代码释义:数组中的元素索引(index)从0开始,即array[0]表示array数组中的第一个元素,将其赋值给变量province。 step 4、将新元素追加到列表中     我们会事先定义一个空列表,告诉python这个变量是列表,目的是处理文本后将拆分的元素追加到这个事先定义的列表中,便于我们后续处理,如在地图展示人数统计中提供了provinces和values两个列表变量进行作图。参见文章 pyecharts可视化地图区域人数统计 。     将元素追加或 添加到列表末尾 的函数是 append() ,其使用语法为:
list.append(obj)
*obj表示object,即添加到列表末尾的对象。 【append()造句】: provinces.append(province) 代码释义:将变量province追加到列表provincs的末尾,当然事先需要定义provinces=[]。[]中括号表示列表。

连贯动作:打开文件+读取文件+处理文本

    Python代码如下:
provinces = []values = []file = "/file/cc/data.txt"f = open(file, mode='r')for line in f:  if line.startswith('地域') or line.strip() == '':    continue  array = line.strip().split('\t')  province = array[0]  value = array[1]  provinces.append(province)  values.append(value)  print(provinces)
     可以print一下看看输出的列表是不是你想要的。温馨提示:写完代码立即测试是很有必要的哟~

总结

    其实原来我是用perl读取和处理文件的,但无论用perl还是python,处理问题的基本思路是一致的: 打开文件->循环读取文件->跳过开头等->去掉每行的换行符->以\t分隔符split每行存储到数组->赋值变量->添加到数组。     特意总结一个perl vs python的表格,仅针对读取文件方面哈! 表   读取文件比较(python vs perl)
itempythonperl
打开文件open()函数open  IN句柄
示例:f=open("/file/c/data.txt",mode='r')示例:open  IN, "
读取文件for循环while循环
示例:for line in f:示例:while()  { … }
跳过该行,进入下一行continuenext
去掉行尾换行符\nline.strip()chomp  $line;
切开每行array=line.strip().split('\t')my  @arr=split /\t/, $line;
数组元素赋值p=array[0]$p=$arr[0]
数组末尾追加元素list.append('obj')push  @arr, $p;
数组名称list列表arr数组
打印变量print(p)print  "$p";
     希望大家有所收获,虽然基本操作大家都懂,但是这样细致的分析是以后写万字代码的基础。

4915ff93f353cc4326cd38d7a4ab3d05.gif

相关文章 pyecharts可视化地图区域人数统计 分享闲鱼平台的个人数据分析

12c3fdc4774f2bce6fed2bad5c4a8d07.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值