使用 csv 阅读器在文本文件中保留双引号

2024-01-31

您好,我有一个带有字符串的文本文件:

你好,“foo,酒吧”

我想将其分成一个列表:

['hello', '"foo, bar"']

有什么办法可以实现这个目标吗?

我现在正在尝试这个:

for line in sys.stdin: csv_file = StringIO.StringIO(line) csv_reader = csv.reader(csv_file)

我希望它们分成两个字符串,即:

'hello' and '"foo, bar"'


假设您从 CSV 中读取一行:

from StringIO import StringIO
import csv

infile = StringIO('hello,"foo, bar"')
reader = csv.reader(infile)
row = reader.next()  # row is ['hello', 'foo, bar']

该行中的第二个值是foo, bar代替"foo, bar"。这不是什么 Python 怪事,而是对 CSV 语法的合理解释。引号可能不是作为值的一部分放在那里,而是为了表明这一点foo, bar是一个值,不应拆分为foo and bar基于逗号 (,)。另一种解决方案是在创建 CSV 文件时转义逗号,因此该行将如下所示:

hello,foo \,bar

所以想要保留这些引用是一个很奇怪的请求。如果我们更多地了解您的用例和更大的前景,我们可以更好地帮助您。你想达到什么目的?输入文件从哪里来?它真的是 CSV 还是其他看起来类似的语法?例如,如果您知道每一行都包含两个用逗号分隔的值,并且第一个值从不包含逗号,那么您可以在第一个逗号上进行拆分:

print 'hello,"foo, bar"'.split(',', 1)  # => ['hello', '"foo, bar"']

但我怀疑输入是否有这样的限制,这就是为什么需要像引号这样的东西来解决歧义。

如果您尝试再次写入 CSV,则系统会在您执行此操作时重新创建引号。它们不必出现在中间列表中:

outfile = StringIO()
writer = csv.writer(outfile)
writer.writerow(row)
print outfile.getvalue()

这将打印

hello,"foo, bar"

您可以通过设置新的方言来自定义精确的 CSV 输出。

如果您想获取行中的各个值并对其应用适当的引用规则,这是可能的,但这有点麻烦:

# We're going to write individual strings, so we don't want a line terminator
csv.register_dialect('no_line_terminator', lineterminator='')

def maybe_quote_string(s):
    out = StringIO()

    # writerow iterates over its argument, so don't give it a plain string
    # or it'll break it up into characters
    csv.writer(out, 'no_line_terminator').writerow([s])

    return out.getvalue()

print maybe_quote_string('foo, bar')
print map(maybe_quote_string, row)

输出是:

"foo, bar"
['hello', '"foo, bar"']

这是我能最接近回答你的问题。这不是真的keeping双引号,而是删除它们并使用可能与最初将它们放在那里的相同规则将它们添加回来。

我再说一遍,你可能在这个问题上走错了路。其他人可能会同意。这就是为什么你很难得到好的答案。您想要解决的更大问题是什么?我们可以帮助您更好地实现这一目标。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 csv 阅读器在文本文件中保留双引号 的相关文章

  • Matplotlib 标准化颜色条 (Python)

    我正在尝试使用 matplotlib 当然还有 numpy 绘制轮廓图 它有效 它绘制了它应该绘制的内容 但不幸的是我无法设置颜色条范围 问题是我有很多图 并且需要所有图都具有相同的颜色条 相同的最小值和最大值 相同的颜色 我复制并粘贴了在
  • 如何自动替换多个文件的文本内容中的字符?

    我有一个文件夹 myfolder包含许多乳胶表 我需要替换其中每个字符 即替换任何minus sign by an en dash 只是为了确定 我们正在替换连字符INSIDE该文件夹中的所有 tex 文件 我不关心 tex 文件名 手动执
  • 在 Python 中使用 sec 函数的反函数

    我正在创建一个程序 用于计算从一定高度范围和设定初始速度发射射弹的最佳角度 在我需要使用的最终方程中 存在一个反 sec 函数 它导致了一些麻烦 我已经导入了数学并尝试使用 asec 无论如何 但是数学似乎无法计算反秒函数 我也明白 sec
  • 使用正则表达式解析 Snort 警报文件

    我正在尝试使用 Python 中的正则表达式从 snort 警报文件中解析出源 目标 IP 和端口 和时间戳 示例如下 03 09 14 10 43 323717 1 2008015 9 ET MALWARE User Agent Win9
  • 在 python-docx 中搜索和替换

    我有一个包含以下字符串的文档 模板 你好 我的名字是鲍勃 鲍勃是一个很好的名字 我想使用 python docx 打开此文档并使用 查找和替换 方法 如果存在 来更改每个字符串 Bob gt Mark 最后 我想生成一个新文档 其中包含字符
  • 无法包含外部 pandas 文档 Pycharm v--2018.1.2

    我无法包含外部 pandas 文档Pycharm v 2018 1 2 例如 numpy gt http docs scipy org doc numpy reference generated module name element na
  • Python3 查找 2 个列表中有多少个差异才能相等

    假设我们有 2 个列表 always具有相同的长度和always包含字符串 list1 sot sot ts gg gg gg list2 gg gg gg gg gg sot 我们需要找到 其中有多少项list2应该改变 以便它等于lis
  • 如何使用 openpyxl 对工作簿中的 Excel 工作表/选项卡进行排序

    我需要按字母数字对工作簿中的选项卡 工作表进行排序 我在用openpyxl https openpyxl readthedocs io en default 操作工作表 您可以尝试排序workbook sheets list workboo
  • 在 Bash 中拆分 csv 文件中的列

    我想从 csv 文件的第二列中提取值并将提取的值存储在新列中 我的数据集示例 page name post id page id A 86680728811 272953252761568 86680728811 A 86680728811
  • 如何在 Windows 上使用 Python 3.6 来安装 Python 2.7

    我想问一下如何使用pip install对于 Python 2 7 当我之前安装并使用 Python 3 6 时 我现在必须使用 Windows 上的 Python 版本 pip install 继续安装 Python 3 6 我需要使用以
  • 使用 python 将文本发送到带有逗号分隔符的列

    如何使用分隔符 在 Excel 中将一列分成两列 并使用 python 命名标题 这是我的代码 import openpyxl w openpyxl load workbook DDdata xlsx active w active a a
  • Python int 太大,无法放入 SQLite

    我收到错误 OverflowError Python int 太大 无法转换为 SQLite INTEGER 来自以下代码块 该文件约25GB 因此必须分部分读取 length 6128765 Works on partitions of
  • ValueError:无法插入 ID,已存在

    我有这个数据 ID TIME 1 2 1 4 1 2 2 3 我想按以下方式对数据进行分组ID并计算每组的平均时间和规模 ID MEAN TIME COUNT 1 2 67 3 2 3 00 1 如果我运行此代码 则会收到错误 ValueE
  • 是否可以写一个负的python类型注释

    这可能听起来不合理 但现在我需要否定类型注释 我的意思是这样的 an int Not Iterable a string Iterable 这是因为我为一个函数编写了一个重载 而 mypy 不理解我 我的功能看起来像这样 overload
  • Python模块单元测试的最佳文件结构组织?

    遗憾的是 我发现有太多方法可以在 Python 中保存单元测试 而且它们通常没有很好的文档记录 我正在寻找一种 终极 结构 它可以满足以下大部分要求 be discoverable by test frameworks including
  • 是否可以强制浮点数的指数或有效数匹配另一个浮点数(Python)?

    这是我前几天试图解决的一个有趣的问题 是否可以强制一个的有效数或指数float与另一个人一样float在Python中 出现这个问题是因为我试图重新调整一些数据 以便最小值和最大值与另一个数据集匹配 然而 我重新调整后的数据略有偏差 大约小
  • asyncio - 多次等待协程(周期性任务)

    我正在尝试为异步事件循环创建定期任务 如下所示 但是我收到 RuntimeError 无法重用已等待的协程 异常 显然 asyncio 不允许等待相同的可等待函数 如中讨论的这个错误线程 https bugs python org issu
  • CSV 在列中查找最大值并附加新数据

    大约两个小时前 我问了一个关于从网站读取和写入数据的问题 从那时起 我花了最后两个小时试图找到一种方法来从输出的 A 列读取最大日期值 将该值与刷新的网站数据进行比较 并将任何新数据附加到 csv 文件而不覆盖旧的或创建重复项 目前 100
  • 将此 MATLAB 代码转换为 Python 时我做错了什么?

    我正在努力将生成波形的 MATLAB 代码转换为 Python 就上下文而言 这是原子力显微镜带激发响应的模拟 与代码错误无关 在 MATLAB 中从 r vec 生成的图形与我在 Python 中生成的图形不同 我是否正确地将 MATLA
  • 如何识别图形线条

    我有以下格式的路径的 x y 数据 示例仅用于说明 seq p1 p2 0 20 2 3 1 20 2 4 2 20 4 4 3 22 5 5 4 22 5 6 5 23 6 2 6 23 6 3 7 23 6 4 每条路径都有多个点 它们

随机推荐

  • 谷歌的无图像按钮

    最近有几篇关于谷歌新的无图像按钮的文章 http stopdesign com archive 2009 02 04 recreating the button html http stopdesign com archive 2009 0
  • 将文本添加到绘图中

    x lt seq 3 3 0 01 y1 lt dnorm x 0 1 y2 lt 0 5 dnorm x 0 1 plot x y1 type l bty L xlab X ylab dnorm X points x y2 type l
  • 数组中所有元素的总和

    我是编程初学者 我想计算数组中所有元素的总和 我做了这个 但我看不出我的错误在哪里 function ArrayAdder array this sum 0 this array array ArrayAdder prototype com
  • python 按不同标准对元组进行排序

    我有一个清单a 1 a 1 b 2 c 我想得到这个列表 2 c 1 a 1 b 如果我这样做 sorted a reverse True 我只能得到 2 c 1 b 1 a 我怎样才能得到我想要的列表 如果您想保留原始列表中的排序顺序 但
  • 如何通过 SoundCloud API 添加评论

    我想通过 SoundCloud API 发表评论 但查看文档 http developers soundcloud com docs api reference tracks这似乎是不可能的 唯一可用的方法 tracks id commen
  • 为什么 React 需要 Babel 和 Webpack 才能工作?

    我正在查看 vue js 的 wiki 页面 看到了这个 与 React 开发相比 Vue 可以集成到 现有的 Web 应用程序更加容易 通常 Web 应用程序 只需包含 Vue js 即可立即开始使用 Vue JavaScript 库 与
  • ASP.NET MVC 中的超快速文本到语音 (WAV -> MP3)

    这个问题本质上是关于微软的语音API SAPI 对于服务器工作负载的适用性以及它是否可以在内部可靠地使用 w3wp用于语音合成 我们有一个异步控制器 它使用本机System Speech NET 4 中的程序集 不是Microsoft Sp
  • 如何刷新 Google OAuth2 AccessToken

    我见过很多问题 https stackoverflow com questions 22357348 google apis client for csharp auth using refresh token关于这个问题有不同的答案 有些
  • 一次循环遍历 2 个列表

    我有两个长度相同的列表 是否可以同时循环这两个列表 我正在寻找正确的语法来执行以下操作 foreach itemA itemB in ListA ListB Console WriteLine itemA ToString itemB To
  • 如何对向量列表执行成对运算(如“%in%”)和集合运算

    这个问题的动机是如何快速查看 R 中多个向量的任何元素是否相等 https stackoverflow com q 39060567 4891738 但不相同 重复 作为一个小例子 假设我们有一个包含 4 个向量的列表 set seed 0
  • 通过 wsHttpBinding 在 PHP 中调用 WCF WebService

    我有一个 WCF Web 服务 我可以通过 basicHttp 连接到它 但不能通过 wsHttp 连接到它 我尝试通过以下方式通过 wshttp 连接到它 service new SoapClient http service compa
  • Angular 5 Service Worker 不工作/不缓存背景图像

    我无法让我的 Angular5 Service Worker 工作 我有两个主要问题 Service Worker 不会缓存用作背景图像的资产图像 模拟网络断开连接后 服务工作人员最初从缓存中提取文件 上述非缓存文件除外 但在第二次刷新后会
  • SQL 更新可选参数 PHP

    我们想要改变将值从 PHP 传递到存储过程 T SQL 的方式 我对 PHP 只有很少的经验 但我将尝试通过与我们的 Web 开发人员的讨论来解释该过程 当前流程 测试表示例 为了更新记录 例如本示例中的 Field3 我们会将所有现有值传
  • 从 select 将记录插入到 OrientDB 类的嵌入字段中

    我正在评估 OrientDB 数据库 我有两个从关系数据库导入的文档类 class Order with properties ID integer OrderItems EmbeddedList of OrderItem and clas
  • 如何访问主项目中的子项目头文件

    我有一个主项目和另一个作为子项目添加的项目 我想将子项目中定义的头文件访问到主项目中 但不幸的是它说文件找不到错误 请查看附件图片 我应该修改什么来访问子项目的头文件 您需要将子项目的路径添加到search path for headers
  • 将实体中的列表转换为数据库中的单个字符串列

    我有一个VARCHAR我的数据库中的字段 该字段的值为val1 val2 val3 是否可以将其设置为ArrayList
  • 在 Pig 中编写 udf 有点像教程

    我是 Pig 新手 并且正在尝试编写 udf 函数 所以基本上这是问题陈述 我有一个这样的虚拟数据 user id movie id date time stamp 所以我想做的就是这个 如果交易是在 9 am and 11 am gt b
  • 为什么 C# 方法不返回值?

    很容易理解为什么method 返回一个值 但我无法理解不返回值的方法的概念 static void PrintName string firstName string lastName Console Writeline firstName
  • 使用 nltk 从德语文本中提取单词

    我正在尝试从德语文档中提取单词 当我使用 nltk 教程中描述的以下方法时 我无法获取具有特定于语言的特殊字符的单词 ptcr nltk corpus PlaintextCorpusReader Corpus words nltk Text
  • 使用 csv 阅读器在文本文件中保留双引号

    您好 我有一个带有字符串的文本文件 你好 foo 酒吧 我想将其分成一个列表 hello foo bar 有什么办法可以实现这个目标吗 我现在正在尝试这个 for line in sys stdin csv file StringIO St