读取列标题中具有多个分隔符的文件并在末尾跳过一些行

2024-04-26

我是新来的Python我想用pandas用于读取数据。我已经做了一些搜索和努力来解决我的问题,但我仍然在挣扎。提前感谢您的帮助!

我有一个如下所示的 .txt 文件;

skip1
 A1| A2 |A3 |A4# A5# A6 A7| A8 , A9
1,2,3,4,5,6,7,8,9
1,2,3,4,5,6,7,8,9
1,2,3,4,5,6,7,8,9

END***
Some other data starts from here

第一个任务是 我想指定 A1、A2、A3、A4、A5、A6、A7、A8 和 A9 作为列名称。但是,有多个分隔符,例如' ','|','#'这使得在读取文件时分配分隔符变得很麻烦。我这样尝试过;

import pandas as pd
import glob
filelist=glob.glob('*.txt')
print(filelist)

df = pd.read_csv(filelist,skiprows=1,skipfooter=2,skipinitialspace=True, header=0, sep=r'\| |,|#',engine='python') 

但当我检查Spyder的数据浏览器df时,似乎什么也没有发生。

第二个任务是在读取过程中删除从行开始的数据END***我不需要。标头始终具有相同的长度。但是,skipfooter 需要跳过的行数,这应该在文件之间进行更改。

已经提出了一些问题,但似乎我无法让他们解决我的问题!

如何使用多个分隔符读取 pandas 中的 txt 文件 https://stackoverflow.com/questions/36559763/how-to-read-txt-file-in-pandas-with-multiple-delimiters

将文本导入带有多个分隔符的 pandas https://stackoverflow.com/questions/26551662/import-text-to-pandas-with-multiple-delimiters/26551913

pandas-在将文件读入文件时忽略特定字符串之后的所有行 https://stackoverflow.com/questions/19138175/pandas-ignore-all-lines-following-a-specific-string-when-reading-a-file-into-a

编辑:关于删除读取删除从行开始的数据END

如果b.txt文件是这样的 b.txt

skip1
 A1| A2 |A3 |A4# A5# A6 A7| A8 , A9
1,2,3,4,5,6,7,8,9
1,2,3,4,5,6,7,8,9
1,2,3,4,5,6,7,8,9

END123
Some other data starts from here

使用下面的第二种解决方案;

txt = open('b.txt').read().split('\nEND')[0]
_, h, txt = txt.split('\n', 2)
pat = r'[\|, ,#,\,]+'
names = re.split(pat, h.strip())

pd.read_csv(
    pd.io.common.StringIO(txt),
    names=names, header=None,
    engine='python')

得到这个,

   A1  A2  A3  A4  A5  A6  A7  A8  A9
0   1   2   3   4   5   6   7   8   9
1   1   2   3   4   5   6   7   8   9
2   1   2   3   4   5   6   7   8   9

分割文件,然后从字符串中读取

txt = open('test.txt').read().split('\nEND***')[0]
pd.read_csv(
    pd.io.common.StringIO(txt),
    sep=r'\W+',
    skiprows=1, engine='python')

   A1  A2  A3  A4  A5  A6  A7  A8  A9
0   1   2   3   4   5   6   7   8   9
1   1   2   3   4   5   6   7   8   9
2   1   2   3   4   5   6   7   8   9

我们可以非常明确地解析标头并将文件的其余部分解析为 csv

txt = open('test.txt').read().split('\nEND***')[0]
_, h, txt = txt.split('\n', 2)
pat = r'[\|, ,#,\,]+'
names = re.split(pat, h.strip())

pd.read_csv(
    pd.io.common.StringIO(txt),
    names=names, header=None,
    engine='python')

   A1  A2  A3  A4  A5  A6  A7  A8  A9
0   1   2   3   4   5   6   7   8   9
1   1   2   3   4   5   6   7   8   9
2   1   2   3   4   5   6   7   8   9
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

读取列标题中具有多个分隔符的文件并在末尾跳过一些行 的相关文章

随机推荐

  • 销毁与解除分配

    在 Accelerated C 第 11 章中 作者提出了一个使用数组模拟 std vector 行为的 Vector 类 他们使用分配器类来处理内存管理 的作用uncreate函数是销毁数组的每个元素并释放为数组分配的空间 templat
  • conda创建环境没有响应

    我想安装 python 2 7 作为 conda 环境 conda create n python2 python 2 7 anaconda Collecting package metadata current repodata json
  • 拥有集合侦听器的好方法?

    有没有比将 Java 集合包装在实现观察者模式的类中更好的方法来在 Java 集合上设置侦听器 你应该检查一下釉面清单 http publicobject com glazedlists 它包含可观察的 List 类 每当添加 删除 替换元
  • @Transactional 注释的替代方案

    spring中回滚事务除了 Transactional注解还有什么替代方案 我已经使用了这个注释 但我想要在 catch 块中回滚事务的方式 有什么办法吗 提前致谢 这是一个草稿 public class SomeService imple
  • Firebase云功能不触发onCreate

    尝试使用 Cloud Functions 处理联系表单提交以发送电子邮件 Hello World 功能正常启动 所以我认为设置很好 该表单填充 消息 集合 但我没有收到以下触发器的日志条目 或错误 const functions requi
  • @types/jest index.d.ts 文件返回错误

    我刚刚将 types jest 安装到了我的 stenciljs 入门应用程序中 现在 当我开始我的项目时 新安装的节点包返回了几个错误 这是我访问时返回的错误npm start我的项目 ERROR TypeScript node modu
  • 自动调整 ggplot 中条形的大小以实现多个图形 R 的均匀性

    我在循环中生成几个条形图 它们都根据输出大小 从绘图 设备大小假设 而不是根据条形大小调整大小 这意味着具有两个条形图的图具有粗条形图 而具有 6 个条形图的图具有细条形图 但两个输出的大小相同 下面的代码代表了我的带有可重现数据的脚本 我
  • 在 C#4 中向 ProgressChanged 事件添加额外参数

    这是我的代码 简单下载器 public void DownloadFile string urlAddress string location using webClient new WebClient webClient Download
  • SQL——排序数据

    因此 我的学校老师要求我从现有数据库中整理一些数据 这很容易手动完成 但如果记录超过 100 条 则时间太长 他是这样问我的 有单独的桌子 其中一个称为 联系人 有 2 列 ID 姓名 第二个称为电子邮件 和第三个 CONT EMAIL 他
  • 将 uint64_t 转换为 std::string

    如何将 uint64 t 值传输到 std string 我需要构造包含该值的 std string 例如这样的事情 void genString uint64 t val std string str some code for str
  • 如何从 FinalBuilder 输出将被 TeamCity 捕获的消息?

    我正在运行 TeamCity Professional 4 5 3 和 FinalBuilder Pro 6 TeamCity 使用命令行任务运行 FinalBuilder 项目 如何让 FinalBuilder 将消息打印到构建日志中 以
  • 如何限制素材输入中的特殊字符

    我有一个材料输入控件 我在用户输入时限制了特殊字符 但是当在任何编辑器中键入一些单词并复制并粘贴带有特殊字符的单词时 这是不起作用的 我已经为此编写了指令以防止特殊字符 但是可以在复制粘贴中提供更好的解决方案限制 应用程序组件 html
  • 强连通分量有什么用?

    我发现了几种可以解释的算法how在有向图中找到强连通分量 但没有解释why你会想要这样做 强连通分量有哪些应用 您应该查看 Coursera 上 Tim Roughgarden 的算法简介课程 对于他所讨论的每一种算法 他都会解释其一些应用
  • 使用 Active Directory 验证 Sharepoint?

    只需要找到一种简单的方法来让 AD 进行身份验证作为 Sharepoint 站点的登录名 这相当快速和简单地开始吗 Thanks 对于 SharePoint 2007 请参阅此article http technet microsoft c
  • 更改 R 中函数的默认参数

    我正在跟进这个答案 https stackoverflow com a 62946040 7223434 我想知道是否有办法设置参数的默认值rug to FALSE和论证multiline to TRUE在生成的图中library effe
  • 在 :before 和 :after 上为每个元素声明“content”属性是否会带来巨大的性能问题?

    您可能知道 如果您愿意使用 before and or after伪元素没有在其中设置文本 您仍然需要声明content 使它们可见 我刚刚将以下内容添加到我的基本样式表中 before after content 所以我不必再进一步声明了
  • 移动设备上的全屏画布

    我创建了一个小型画布游戏 希望它能够在 PC 和移动设备上运行 在 PC 上 画布区域可以按预期工作 但在为移动设备设计时就会出现问题 有没有一种方法 CSS 或 javascript 可以让用户双击网站内的画布区域时变成全屏 除非画布足够
  • 如何有效地使用 python 中的空数据填充文件?

    我需要创建不包含数据的任意大小的文件 它们可能相当大 虽然我可以循环遍历并写入一个空字符 直到达到文件大小 但这看起来很难看 with open filename wb as f what goes here 执行此操作的有效 Python
  • 如何获取特定CSS列的内容

    对不起我的英语不好 我正在使用 css 多列布局 有没有办法获取特定列的内容 或者如何找到分隔列的字符串的索引 div class foo div
  • 读取列标题中具有多个分隔符的文件并在末尾跳过一些行

    我是新来的Python我想用pandas用于读取数据 我已经做了一些搜索和努力来解决我的问题 但我仍然在挣扎 提前感谢您的帮助 我有一个如下所示的 txt 文件 skip1 A1 A2 A3 A4 A5 A6 A7 A8 A9 1 2 3