使用 python 3 代码在 CSV 文件中查找特定标头

2024-01-09

现在我有Python 3代码,它获取CSV文件中的一列数据,根据空格将每个单元格中的短语分隔成单独的单词,然后将数据导出回新的CSV文件中。

我想知道是否有一种方法可以告诉 python 仅将格式化代码应用于具有特定标题的特定列?

这是我的源数据的样子

Keyword              Source       Number 
Lions Tigers Bears     US          3
Dogs Zebra            Canada       5
Sharks Guppies         US          2

这是我的代码,它将每个单元格中的短语根据空格分隔成单独的单词

with open(b'C:\Users\jk\Desktop\helloworld.csv', 'r') as datafile:
    data = []
    for row in datafile:
        data.extend(item.strip() for item in row.split())
with open('test.csv', 'w') as a_file:
    for result in data:
        result = ''.join(result)
        a_file.write(result + '\n')
        print(result)

这样源数据就变成了

 Keywords         Source         Number
 Lions            US              3
 Tigers
 Bears
 Dogs             Canada          5

ETC

在这种情况下,我只需要将所有这些代码应用于具有标题的一列Keyword。理想情况下,我想做的是将“源”和“数字”中找到的数据扩展到这些新创建的行(Lions US 3 - Tigers US 3 - Bears US 3 等),但我还没有真正做到还没弄清楚那部分!

我在论坛上闲逛了一段时间,试图找到答案,我知道你可以告诉 python 读取 CSV 文件的第一行,其中放置了标题(headers = file.readline())但除此之外我就迷失了。使用 CSV 阅读器可以更轻松地完成此任务吗?


Use the csv module https://docs.python.org/3/library/csv.html将数据拆分为列。使用csv.DictReader()对象,以便更轻松地通过标题选择列:

import csv

source = r'C:\Users\jk\Desktop\helloworld.csv'
dest = 'test.csv'

with open(source, newline='') as inf, open(dest, 'w', newline='') as outf:
    reader = csv.DictReader(inf)
    writer = csv.DictWriter(outf, fieldnames=reader.fieldnames)
    for row in reader:
        words = row['Keyword'].split()
        row['Keyword'] = words[0]
        writer.writerow(row)
        writer.writerows({'Keyword': w} for w in words[1:])

The DictReader()将从文件中读取第一行并将其用作为每行生成的字典的键;所以一行看起来像:

{'Keyword': 'Lions Tigers Bears', 'Source': 'US', 'Number': '3'}

现在,您可以单独处理每一列,并仅使用该列的第一个单词更新字典Keyword为剩余单词生成附加行之前的列。

我假设你的文件是comma分开了。如果需要不同的分隔符,则设置delimiter该角色的参数:

reader = csv.DictReader(inf, delimiter='\t')

用于制表符分隔的格式。有关各种选项,请参阅模块文档,包括称为dialects.

Demo:

>>> import sys
>>> import csv
>>> from io import StringIO
>>> sample = StringIO('''\
... Keyword,Source,Number
... Lions Tigers Bears,US,3
... Dogs Zebra,Canada,5
... Sharks Guppies,US,2
... ''')
>>> output = StringIO()
>>> reader = csv.DictReader(sample)
>>> writer = csv.DictWriter(output, fieldnames=reader.fieldnames)
>>> for row in reader:
...     words = row['Keyword'].split()
...     row['Keyword'] = words[0]
...     writer.writerow(row)
...     writer.writerows({'Keyword': w} for w in words[1:])
... 
12
15
13
>>> print(output.getvalue())
Lions,US,3
Tigers,,
Bears,,
Dogs,Canada,5
Zebras,,
Sharks,US,2
Guppies,,
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 python 3 代码在 CSV 文件中查找特定标头 的相关文章

随机推荐

  • jquery load() 的 Javascript 替代品

    有人可以给我一个替代 jquery load 的纯 JavaScript 示例吗 或者将我指向带有示例的仪式站点 谢谢 UPDATE 这不是我想问的 我需要使用 Ajax 加载 URL 并将返回的 HTML 插入到 div 中 我不太明白缺
  • 如何检查 PL/SQL BEFORE UPDATE 触发器中是否显式指定了列值?

    有没有办法告诉 PL SQL 中哪些列被显式更新BEFORE UPDATE扳机 例如 我要设置 new last modified by USER仅当UPDATE语句没有明确指定该列的值 Use the UPDATING功能 if upda
  • Chrome 开发者工具“样式”选项卡显示 CSS 定义褪色,为什么?

    我已经使用 Chrome 很长时间了 但我从来没有 我不记得了 在样式面板中遇到过褪色的 CSS 定义 选择器尚未在其他地方定义 Example 编辑 为了清楚起见 我不是指用户代理样式表 我不明白为什么它会褪色以及这意味着什么 该定义似乎
  • Laravel 表单 html,带有 PUT 路由的 PUT 方法

    我的路线中有这个 Domain URI Name Action
  • 使用 twinx 时控制跟踪器

    右下角的跟踪器 以红色突出显示 报告相对于右侧 y 轴的 y 值 如何让跟踪器报告相对于左侧 y 轴的 y 值 import matplotlib pyplot as plt import numpy as np np random see
  • 将“django-filter”与 CHOICES 字段一起使用 - 需要“Any”选项

    我正在使用非常酷的 django filter 通过 http github com alex django filter http github com alex django filter 要么似乎无法理解文档 要么只是 需要一点推动
  • Ruby Regex - 需要替换正则表达式匹配中出现的每个字符

    这是我的字符串 mystring Q object1 this is a testyay asdkf asfkd object2 yo ho ho 我要分开mystring在逗号上 因此我想 暂时 去掉转义引号之间的逗号 因此 我需要匹配转
  • C++:宏参数中可以有空格吗?

    如果我定义一个带有参数的宏 如下所示 define define int a int a 并提供一个参数 中间有空格 如下所示 define int a 并得到输出 int a 有可能的使用 define ASSIGN A B B A 我想
  • Grafana日志插件不显示日志面板

    我正在尝试创建一个支持日志面板的 Grafana 插件 我正在关注来自他们网站的路线 https grafana com docs grafana latest developers plugins build a logs data so
  • 突出显示 FlowDocument 中的部分文本

    我想突出显示文本中的某些部分FlowDocument根据搜索结果 我正在做的是获取搜索词在文本中出现的索引FlowDocument然后在从找到的索引开始到找到的索引 搜索词长度结束的文本范围上应用背景颜色 TextRange content
  • 将鼠标悬停在另一个元素上时更改一个元素的类 d3

    我有一个图像列表和图像标题列表 我希望当我将鼠标悬停在相应的图像上时能够显示标题的悬停状态 更改 css 但我不知道如何连接这两个数据 我的代码如下 我有它 这样当您单击顶部数字时 信息就会显示在下面
  • 将焦点设置在 Windows 中的控制台上?

    是否可以将焦点设置在 Windows 中的控制台应用程序上 SetFocus http msdn microsoft com en us library ms646312 VS 85 aspx看起来很有希望 但它需要一个 HWND 而且我不
  • VARCHAR2 列上的 ResultSet.getString() 返回空字符串

    免责声明 我实际上对 Oracle 和 Java 都一无所知 问题出在其他一些开发人员在某个时间点完成然后离开公司的项目中 现在我必须设置网络服务器 数据库并使其全部启动并运行 代码大约是这样的 OracleDataSource ods n
  • 扩展基元而不对其进行原型设计

    我正在开发一个相当丑陋的库 它可以让你做一些奇怪的事情 有了图表 您可以以链式样式映射一组集合 并且当您更改 整个系统中要改变的值 当最终类型是 JS 原语时 问题就出现了 就我而言 在使用值和对象制作图表后 我可以执行以下操作 CHAIN
  • 动态添加项目到边框视口

    我想首先创建一个空视口 布局 边框 然后向其中添加项目 最后渲染并显示 但是当我创建视口元素时 它抛出一个错误 说 未捕获的类型错误 无法读取未定义的属性 flex 这是我的代码
  • 通过adb授予PACKAGE_USAGE_STATS权限

    adb shell pm grant x y z android permission PACKAGE USAGE STATS 这是授予的命令PACKAGE USAGE STATS通过 adb 获得权限 但只有当我从未在本机设置中切换此权限
  • 如何使用react-router-dom创建受保护的路由?

    如何创建受保护的路由react router dom并将响应存储在 localStorage 中 以便用户下次尝试打开时可以再次查看其详细信息 登录后 他们应该重定向到仪表板页面 所有功能都添加到 ContextApi 中 代码沙箱链接 C
  • webpack "--watch" 与 "--hot" :有什么区别?

    使用有什么区别 webpack watch and webpack dev server hot thanks 根据 webpack 文档 https webpack github io docs tutorials getting sta
  • 仅 Vault Enterprise 的 Vault Sidecar 注入器权限被拒绝

    我正在尝试探索Vault Enterprise 但当我使用Vault Enterprise时 Sidecar的权限被拒绝 但当我尝试使用本地Vault服务器时 似乎工作正常 这是包含本地保管库的工作示例的存储库保险库边车注射器应用程序 ht
  • 使用 python 3 代码在 CSV 文件中查找特定标头

    现在我有Python 3代码 它获取CSV文件中的一列数据 根据空格将每个单元格中的短语分隔成单独的单词 然后将数据导出回新的CSV文件中 我想知道是否有一种方法可以告诉 python 仅将格式化代码应用于具有特定标题的特定列 这是我的源数