Python如何根据关键字逐行提取文本内容问题
作者:南洲.
这篇文章主要介绍了Python如何根据关键字逐行提取文本内容问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
Python根据关键字逐行提取文本内容
在获取测试的一些数据时,需要对数据重新提取保存,因此记录。
原始文本样式
2018-09-06 16:42 - INFO - Coordinate: [-285.444793701, 1958.66479492, 175.649078369], End of execution. 2018-09-06 16:43 - INFO - Coordinate: [-301.866485596, 1959.87561035, 175.649200439], End of execution. 2018-09-06 16:44 - INFO - Coordinate: [-318.365051275, 1960.27978516, 175.646804815], End of execution. 2018-09-06 16:45 - INFO - Coordinate: [-334.736816406, 1961.48742676, 176.991455078], End of execution. 2018-09-06 16:46 - INFO - Coordinate: [-356.053833008, 1962.49230957, 176.991180429], End of execution. 2018-09-06 16:47 - INFO - Coordinate: [-370.848907471, 1962.69274902, 176.989471436], End of execution. 2018-09-06 16:48 - INFO - Coordinate: [-388.050415039, 1963.19372559, 178.462493896], End of execution.
提取代码如下
# key words to extract the coordinate str_start = "[" str_end = "]" f_orig = open('/home/yasin/test_coordinate.txt') # original file f_coord = open('coordinate_save.txt', 'w') # target file used to save line = f_orig.readline() while line: # find index according to the key words index_start = line.find(str_start) index_end = line.find(str_end) text = line[index_start : index_end] if text != '': # If there is more than one [], we can use "Coordinate" and "End" as str_start and str_end f_coord.write(str(line[index_start + 1 : index_end]) + '\n') line = f_orig.readline() f_orig.close() f_coord.close()
提取后保存样式
-285.444793701, 1958.66479492, 175.64907836 -301.866485596, 1959.87561035, 175.64920043 -318.365051275, 1960.27978516, 175.64680481 -334.736816406, 1961.48742676, 176.99145507 -356.053833008, 1962.49230957, 176.99118042 -370.848907471, 1962.69274902, 176.98947143 -388.050415039, 1963.19372559, 178.46249389
有的同学问如下问题:
根据vertex关键字在其后面进行换行?
我的方法是对文本按关键字分割并重写文件,如果各位有更好的方法,可以一起探讨!
f_in = open('test.txt') #源文件 f_out = open('out.txt', 'w') #重写文件 line = f_in.readlines() #整个文件读入 key_word = "hello" line_split = line[0].split(key_word) #按指定单词分割 for i in range(len(line_split)): if len(line_split[i])>0: f_out.write(key_word+":"+line_split[i].strip(",")+"\n") # 去掉逗号再加上换行即可
python提取关键字之后的段落
import pandas as pd import re # 读取原始 Excel 文件 df = pd.read_excel(r"C:\Users\win10\Desktop\1.xlsx") # 定义正则表达式 pattern = re.compile(r'.*Conclusion.*', re.IGNORECASE) # 遍历每一行数据 for index, row in df.iterrows(): if isinstance(row["art_content"], str) and pd.notna(row["art_content"]): # 获取包含 "Conclusion" 的段落所在行号 conclusion_line_index = -1 for i, line in enumerate(row["art_content"].split("\n")): if pattern.match(line): conclusion_line_index = i break if conclusion_line_index != -1: # 获取从 "Conclusion" 行开始的所有段落 conclusion_paragraphs = row["art_content"].split("\n")[conclusion_line_index + 1 :] # 将所有段落连接为一个字符串,并去掉首尾空格 conclusion_section = " ".join(conclusion_paragraphs).strip() # 将结果赋值给对应的 conclusion 列 df.at[index, "conclusion"] = conclusion_section # 将处理后的数据写入新的 Excel 文件 df.to_excel(r"C:\Users\win10\Desktop\工作簿1.xlsx", index=False)
以上代码中,我们遍历每个 "art_content" 列的文本内容,用循环定位到包含 "Conclusion" 字样的段落所在的行号(如果没有找到则保持行号为 -1)。
如果找到了 "Conclusion" 所在的段落,就将该段落以及其以下的所有段落连接成一个字符串,并赋值给对应的 "conclusion" 列。
处理完毕后,将整个 DataFrame 存入新的 Excel 文件中。
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。