- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我有一个制表符分隔的文本文件,每条记录有 10 列,如下所示:
p001 64 20141209 meals (attendees) ML ENTER Entertainment xyz Restaurants 6.0 "_e' Restaurants (123) 456-7890 \r\n FORUM \r\n ,Around \r\n\r\n':33 113-2 \r\n\r\n 8440 XYZ09'15 1:11PM \r\n\r\n 1 Burger 6.00 \r\n\r\n SSIONS 6.00 \r\n TOTAL PAID 6 .00 \r\n XXXXXXXXXXX2012 XX/XX \r\n XYZ EXPRESS
6.00 \r\n\r\n\r\n 7,-10( YOU! FOR DINING WITH US! \r\n\r\n 113-2 \r\n\r\nYour r is: 840 \r\n"
P.S:最后一列的文本用“”括起来。我的第一列不是唯一的。
我想将此文本文件转换为 csv 文件,以便我只从记录的第 1、2、8、9 和 10 列中选取数据。另外,所有的数据都要用“.”括起来。
例如,上面的记录应该在输出的csv文件中转换成下面一行:
"p001","64","xyz Restaurants","6.0","_e' Restaurants (123) 456-7890 \r\n FORUM \r\n ,Around \r\n\r\n':33 113-2 \r\n\r\n 8440 XYZ09'15 1:11PM \r\n\r\n 1 Burger 6.00 \r\n\r\n SSIONS 6.00 \r\n TOTAL PAID 6 .00 \r\n XXXXXXXXXXX2012 XX/XX \r\n XYZ EXPRESS
6.00 \r\n\r\n\r\n 7,-10( YOU! FOR DINING WITH US! \r\n\r\n 113-2 \r\n\r\nYour r is: 840 \r\n"
最佳答案
这应该适合您。请注意,这使用了 csv输入和输出库,我们只需更改文本分隔符。 CSV写入文件时应该自动转义引号字符。
import csv
try:
with open(r'input.tsv', 'r', newline='\n') as in_f, \
open(r'output.csv', 'w', newline='\n') as out_f:
reader = csv.reader(in_f, delimiter='\t')
writer = csv.writer(out_f, delimiter=',', quoting=csv.QUOTE_ALL) # Quoting added per comment from @Rob.
for li in reader:
try:
writer.writerow([li[0], li[1], li[2], li[7], li[8], li[9],])
except IndexError: # Prevent errors on blank lines.
pass
except IOError as err:
print(err)
我无法解析制表符在您的示例数据中的位置(而不是空格),但使用以下 input.tsv
数据对其进行了测试:
1 2 3 4 5 6 7 8 9 10
11 12 13 14 15 16 17 18 19 20
21 22 23 24 25 26 27 28 29 30
将在output.csv
中生成如下结果:
"1","2","3","8","9","10"
"11","12","13","18","19","20"
"21","22","23","28","29","30"
请注意,根据 Rob 评论中的建议,添加 quoting=csv.QUOTE_ALL
的代码更新。感谢捕获!
关于Python - 以特定方式将制表符分隔文件转换为csv,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29951191/
使用制表符 - 最初,当我构建表时,我可以在列定义中提供验证选项: {title:"Rating", field:"rating", editor:"input", validator:"requir
在 Notepad++ 中有一个非常方便的按钮,我可以按下它来查看空格、制表符和换行符所在的符号,这样我就可以看到哪些空格是由空格引起的,哪些是由制表符引起的。我可以在 emacs 中做到这一点吗?如
我在 .NET Windows 窗体应用程序中使用 RichTextBox 控件。我允许用户在文本框本身内按 TAB 键。但是,当我将 .Text 值保存在文本框中时,它将显示如下: "This[]i
我想知道如何使用 Interactive Demo 上使用的选择器来清除过滤器对于性别标题。 最佳答案 如果您询问如何向选择 header 过滤器添加空选项,则只需在 headerFilterPara
我有一个包含搜索结果的制表器。这是代码: var table = new Tabulator("#json-table", { layout:"fitDataFill", //init
我正在尝试构建一个可由用户修改的交互式表格。就我而言,原始数据集是本地对象数组。 制表符具有用于删除行的buttonCross选项,但它仅影响表格视觉效果。如何让它找到该行呈现的匹配对象并将其从表数据
我正在制作许多原始 html 表格并使用它们将它们转换为制表符 var table = new Tabulator("#main", { layout:"fitColumns", to
这个问题在这里已经有了答案: Any way for a combo box with 2 values per line? (3 个答案) 关闭 9 年前。 我有一个包含各种项目的 CSV 文件。
我是 JavaScript 的新手,目前正在学习如何使用 Tabulator(除此问题外它工作得很好)。 我想为每个列标题添加一个菜单按钮,然后打开一个下拉菜单。从此菜单中,用户应该能够选择“Grou
我正在尝试处理文本区域中的粘贴代码,并希望对粘贴到第一个非间距字符的内容进行左 trim 。我想采用以下代码: if (foo) { console.log(bar);
我预计 TAB 字符会比 SPACE 字符宽,但在 HTML5 canvas 中,它们是相同的。加上其他一些,这不是那么重要: var c=document.getElementById('mycan
在 shell(GNU bash,版本 4.2.47(1)-release (x86_64-suse-linux-gnu))中,当我点击自动完成选项卡时,“$”在之后被转义变量名称已完成,但如果没有完
我正在制作一个程序,我将从 mysql 表中的 txt 文件加载数据。我将创建具有特定字段的表,然后我将从其中的 txt 文件加载数据。我正在使用 java 来执行该程序。 我写的是下面的内容: pr
Tabulator 有一个名为Column Calculations 的模块。 我需要添加页面总和和总和 例如,我可以添加页脚来计算总和,但我无法添加可见行总和,或者换句话说当前页面的总和仅在同一时间
我不是 javascript 专家,所以我有一个简短的问题,有人知道如何在这里使用 JavaScript tabifier - http://www.barelyfitz.com/projects/t
这是我之前问题的延续(如果你好奇,请检查它们)。 我已经看到了隧道尽头的曙光,但还有最后一个问题。 出于某种原因,每一行都以制表符开头。 我怎样才能忽略第一个字符(在我的例子中是“制表符”(\t))?
请指教以下理解问题??? 我在我的 Linux 机器上输入:(以便通过 top 命令获取总内存) top -n1 | grep Mem: Mem: 2075024k total, 2059064
我该如何解决这个问题: 原因: java.lang.IllegalArgumentException: String [\t] with length 2 cannot be co
1.用法 \t 表示制表符,相当于制表符 前面的输出内容位数为8的倍数,\t将输出8个空格 前面的输出内容位数不是8的倍数,\t将补足8位 2.测试用例 少于8位 等于8位 大于8位
我正在尝试将 Tabulator v4.6.3 与 fitData 布局一起使用。这是我的代码: var table = new Tabulator("#cowTable", { da
我是一名优秀的程序员,十分优秀!