gpt4 book ai didi

python - 替换制表符分隔文件中封闭字符串中的制表符 Python

转载 作者:太空宇宙 更新时间:2023-11-03 21:14:24 28 4
gpt4 key购买 nike

我有一个导出为制表符分隔的文件,其中有一些字符串字段,其中包含制表符,因此在导入时它会移动列。我尝试找到一些方法来使用其他工具执行此操作(例如,请参阅 replace tab in an enclosed string in a tab delimited file linux 以了解使用 gawk 的解决方案),但希望能够使用 python 从我的 Jupyter Notebook 执行此操作。

示例数据:

"badstring"1"good string"2"also good""01/01/01"

需要成为

"bad string"1"good string""also good""01/01/01"

我认为正则表达式是关键,但不够熟练,无法快速将其整合在一起。现在,我正在考虑在选项卡上拆分,然后评估缺少结尾和开始引号的字符串,然后将它们重新连接在一起,但我现在使用的方法可能存在一些陷阱。

如有任何帮助,我们将不胜感激。谢谢...JP

最佳答案

只要字段被正确引用,制表符分隔的 CSV 中的字段中的制表符就不错,这里就是这种情况,因此您可以简单地使用 csv.readerdelimiter 参数设置为 '\t':

from io import StringIO
import csv
f = StringIO('''"bad\tstring"\t1\t"good string"\t2\t"also good"\t"01/01/01"''')
print(list(csv.reader(f, delimiter='\t')))

输出:

[['bad\tstring', '1', 'good string', '2', 'also good', '01/01/01']]

如果您仍然坚持用空格替换制表符,则可以通过替换 csv.reader 生成的输出中的 '\t' 轻松实现这一点。

print([[s.replace('\t', ' ') for s in row] for row in csv.reader(f, delimiter='\t')])

输出:

[['bad string', '1', 'good string', '2', 'also good', '01/01/01']]

如果需要,您可以使用 csv.writer.writerows 写回 CSV。

关于python - 替换制表符分隔文件中封闭字符串中的制表符 Python,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54830276/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com