python - 如何使用python将文本提取到数据框或csv中的每一行
问题描述
我有一个文本文件包含
[(XXX)].XX>[(XXX)].X.XXX
XXX.[(X)].[(XXX)]>>[(XXX)].XX
大约有 10k 行。[(XXX)], XX 论文可以是其中的 1 到 10 个。
我想要 2 个数据框/CSV 包含
数据框 1
1 2 3
1 [(XXX)] XX
2 XXX [(X)] [(XXX)]
数据框 2
1 2 3
1 [(XXX)] X XXX
2 [(XXX)] XX
我正在尝试这样但失败了
def get_sentences(filename):
with open(filename) as file_contents:
d1, d2 ,d3= '>', '>>','.' # just example delimiters
results = []
for line in file_contents:
if d1 in line:
results = []
elif d2 in line:
yield results
else:
results.append(line)
感谢任何建议。
实际数据集
[Na+].[CH3:2][C:3](=[O:5])[O-].[CH3:6][c:7]1[cH:12][cH:11][cH:10][cH:9][cH:8]1>>[c:7]1([CH3:6])[c:12]([C:3]([c:2]2[cH:11][cH:12][cH:7][cH:8][c:9]2[CH3:10])=[O:5])[cH:11][cH:10][cH:9][cH:8]1
[CH:1]1([C:4]([c:6]2[cH:11][cH:10][c:9]([C:12]([CH3:20])(C)[C:13](N(C)OC)=O)[cH:8][cH:7]2)=[O:5])[CH2:3][CH2:2]1.[BrH:21].[C:22](=[O:25])([O-])[OH:23].[Na+]>O>[Br:21][CH2:3][CH2:2][CH2:1][C:4]([c:6]1[cH:11][cH:10][c:9]([C:12]([CH3:20])([CH3:13])[C:22]([OH:23])=[O:25])[cH:8][cH:7]1)=[O:5]
解决方案
首先,我们打开一个文件并使用该readlines()
函数来获取所有行。然后我们遍历data
变量并用.
. 然后我们正在创建一个新的字典元素 - 的第一个元素splitter
是键,其他元素是值。最后,使用pandas
DataFrame()
我们正在创建的函数DataFrame
using createddictionary
import pandas as pd
with open('file_name.txt') as f:
data = f.readlines()
buffer = {}
for i in data:
splitter = i.split('.')
buffer[splitter[0]] = splitter[1:]
df = pd.DataFrame(buffer)
推荐阅读
- javascript - UseEffect 挂钩:无法对未安装的组件执行 React 状态更新
- google-sheets - 如何在谷歌表格中获得更多位数的多项式趋势线
- altbeacon - iBeacon 传输似乎不稳定,Altbeacon android Kotlin
- amazon-web-services - 是否有任何 AWS CLI 命令来获取特定资源的支持区域列表
- angular - NPM Azure 管道 - 缺少脚本
- python - Selenium 脚本在本地运行,但由于 TimeOutException 在 jenkins 中失败
- php - Laravel 使用经过验证的中间件保护路由不起作用
- user-interface - 我们可以在 Jetson Nano 中使用颤振吗?
- php - 在 PHP 中以字符串形式存储的类上调用静态成员函数?
- php - 双 foreach 循环不会在 cakephp 中循环