如何正确读取csv中格​​式错误的字符串

2023-12-30

在 csv 中,对于列,字符串中存在歧义。正因为如此,我得到6列表中的值而不是5值作为输出。

Code:

import csv
csv_data = csv.reader(file('test.csv'))
for row in csv_data:
    print row

我尝试更换" with space至少获得不带任何引号的普通字符串,如下所示,

for row in csv_data:
    print [r.replace('"',' ') for r in row] # This did't worked as expected.

Input:

csv 文件中的行看起来像这样,

1,2,"text1", "Sample text ""present" in csv, as this",5

"Sample text "present" in csv, as this" # Error due to this value.

Output:

['1', '2', 'text1', 'Sample text present" in csv', 'as this', 5]

预期输出:

['1', '2', 'text1', 'Sample text "present" in csv, as this', 5]

这几乎是令人尴尬的黑客行为,但似乎至少对你的问题中显示的示例输入有效。它的工作原理是对读取的每一行进行后处理csvreader并尝试检测何时由于格式错误而导致错误读取,然后进行更正。

import csv

def read_csv(filename):
    with open(filename, 'rb') as file:
        for row in csv.reader(file, skipinitialspace=True, quotechar=None):
            newrow = []
            use_a = True
            for a, b in zip(row, row[1:]):
                # Detect bad formatting.
                if (a.startswith('"') and not a.endswith('"')
                        and not b.startswith('"') and b.endswith('"')):
                    # Join misread field backs together.
                    newrow.append(', '.join((a,b)))
                    use_a = False
                else:
                    if use_a:
                        newrow.append(a)
                    else:
                        newrow.append(b)
                        use_a = True
            yield [field.replace('""', '"').strip('"') for field in newrow]

for row in read_csv('fmt_test2.csv'):
    print(row)

Output:

['1', '2', 'text1', 'Sample text "present" in csv, as this', '5']
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何正确读取csv中格​​式错误的字符串 的相关文章

随机推荐

  • svn 中的“git add”等效项?

    要向 git 存储库提交一些更改 我必须首先将其添加到暂存状态 如果我不添加要提交的文件 它将不会转到存储库 但在SVN中 显然不存在这种暂存状态 我对工作副本所做的每个更改都会通过下一个 svn 提交发送到存储库 如何防止提交某些本地更改
  • 升级到react-native版本0.60.4后react-native run-android出错

    我正在使用现有应用程序将反应本机从 0 59 5 升级到 0 60 4 但面临如下问题 Where Build file home bingl Projects blackstar frontend android app build gr
  • 在 SWT TableViewer 中对齐图像

    我刚刚发现 在 swt tableviewer 中对齐图像在某种程度上是不可能的 例如 使用 SWT RIGHT 创建 TableColumn 对该列没有影响 如果其 labelprovider 返回图像 问题 是否有其他方法来对齐图像 而
  • 使用 wikiPageRedirects 的 sparql

    我正在使用 sparql 来查找实体的位置 我有来自 dbpedia spootlight 的网址 并且想找到它们的位置 所以我使用的查询是 PREFIX geo
  • 在 R 中向哑铃图添加图例

    使用以下代码 我创建了一个哑铃图 f lt ggplot Brewers PA aes x PA 2015 xend PA 2016 y Name f geom dumbbell colour darkblue point colour l
  • 通过 http Handler 提供 javascript 文件

    我编写了一个 HTTP 处理程序 它根据传递给处理程序的值输出内容 我正在尝试扩展它 以便它也输出 flash 但是要做到这一点 我还需要提供一个 javascript 文件 javascript 文件本身是另一个程序集中的嵌入资源 因此我
  • 获取第一个类别的名称

    我正在尝试创建一个列出每个类别内容的单个页面 我已经成功创建了该列表 我现在需要获取类别的名称 我有以下代码 ul li CATEGORY NAME HERE li li a href a li ul 如何调用第一个类别 0 的名称 当前编
  • 收集记录到 sys_refcursor

    甲骨文11g 这似乎比应有的困难 所以我可能走错了路 我有一个生成用户定义表单的应用程序 我的数据比这更复杂一点 但想法是 我有一个数据表 其中包含从用户定义表单输入的所有数据 create table formData id number
  • azure 免费试用帐户无法通过 java sdk 进行身份验证

    我正在使用简单的 java sdk 代码来验证 azure 基本连接 我已在azure门户的设置中上传了管理证书 但每当我尝试进行身份验证时 都会遇到以下异常 线程 main 中出现异常 com microsoft windowsazure
  • gnuplot:如何将数据文件值保存到变量中(有条件)?

    我使用 Gnuplot 我想将数据文件的值保存到带有条件的变量中 例如 我有以下数据文件 example dat columnl column2 5 7 0 3 4 0 7 6 0 在我的 gnuplot 脚本中 我希望能够编写 varia
  • pyvenv 无法工作,因为 Ensurepip 不可用

    几天前我从 ubuntu 14 04 升级到 ubuntu 16 04 当我尝试使用创建虚拟环境时 pyvenv venv or python3 m venv venv 有一个错误 The virtual environment was n
  • 为什么 vim 不遵守 python 文件中的 Expandtab?

    安装 Vundle 后 我的 vim 不再遵循我的 Expandtab 设置 我的制表符被设置为 2 个空格 但现在在 python 文件中不再这样做 问题是由这一行调用的 filetype plugin on 这行代码有什么作用 vund
  • 使用 Apple Accelerate 框架选择实数与复数 2D FFT

    谁能建议使用正确的 FFT 实数或复数 我看过here https stackoverflow com questions 3398753 using the apple fft and accelerate framework但仍有疑问
  • Windows CE 还是 Windows Embedded Standard?

    我正在构建一个带有触摸屏和其他东西的交互式便携式广告活动设备 x86 平台 对于设备来说 Win CE 或 Win 嵌入式标准 XPE 哪个操作系统更好 我需要提供对Flash等多媒体平台的支持 以便于广告开发 thanks Windows
  • Paramiko Expect - 拖尾

    我正在尝试跟踪日志文件 并且它有效 但我还需要能够分析输出和日志中的错误等 我正在使用 Paramiko expect github 页面上的基本示例 但我不知道如何执行此操作 import traceback import paramik
  • 如何使用 EJS 模板提供 Webpack 捆绑包?

    我正在尝试使用 Express 和 EJS 组合一个基本的全栈应用程序 并使用 Webpack 捆绑我的静态资产 我遇到的困境之一是 Express 中的不同路线使用 EJS 返回服务器端构建的 HTML 但我无法弄清楚如何将这些模板连接到
  • 使用画布导出图像

    我正在创建一个应用程序 仅基于 HTML CSS 和 jQuery 在其中我将创建一个基于图层的图像 只是一堆彼此之上的 div 然后我需要将其导出 以便用户可以下载最终版本为 JPG 或 PNG 有什么办法可以导出画布内容作为可下载的图像
  • SQL查询,每组选择5个最新的

    我有这张桌子 CREATE TABLE codes id int 11 unsigned NOT NULL AUTO INCREMENT language id int 11 unsigned NOT NULL title varchar
  • 加载片段时显示加载微调器

    我开发了一个基于片段的应用程序 我有一个带有按钮的菜单片段 这些按钮每个都会打开一个新片段 替换最后一个片段 问题是 某些片段需要一段时间才能打开 因为它会调用一些异步任务并填充一些列表视图 因此 当我按下菜单片段中的按钮时 它会保持冻结
  • 如何正确读取csv中格​​式错误的字符串

    在 csv 中 对于列 字符串中存在歧义 正因为如此 我得到6列表中的值而不是5值作为输出 Code import csv csv data csv reader file test csv for row in csv data prin