我有一个大CSV我需要删除第一列数据。我无法在 Excel 中打开它,因为 Excel 会将列中的某些值转换为科学数字。
我在用记事本++,我正在尝试从文件 EXE 中串起第一列,
1,Value1,value2,value3,value4,value5
3445,Value1,value2,value3,value4,value5
12345,Value1,value2,value3,value4,value5
1234,Value1,value2,value3,value4,value5
11,Value1,value2,value3,value4,value5
看起来像
Value1,value2,value3,value4,value5
Value1,value2,value3,value4,value5
Value1,value2,value3,value4,value5
Value1,value2,value3,value4,value5
Value1,value2,value3,value4,value5
答案1
Notepad++ 的搜索和替换支持正则表达式(regex),可以轻松用于此。
使用以下正则表达式来搜索:
^[^,]+,(.+)
这会匹配行首,后面跟着尽可能多的字符(不是逗号),后面跟着逗号,后面跟着行的其余部分。行的其余部分被分组为第一个子匹配。
全局替换为:
\1
这表示第一个子匹配(行的剩余部分)。这样,每行都会被第一列和逗号后的所有内容替换。
在我找到上述方法在一次全局替换中完成此操作(并相应地更新了我的回复)后,我注意到此回复基本相同,但也对所使用的正则表达式进行了全面的解释。
笔记:较短的正则表达式^[^,]+,
不能用于全局替换空字符串,因为 Notepad++ 随后会替换除最后一列之外的所有列:替换第一列后,将替换第二列(现在是第一列,与正则表达式完全匹配),然后替换第三列,依此类推。但是,较短的正则表达式可以完美地与其他编辑器配合使用(例如掌上平板电脑或者vim)。
答案2
按Ctrl+H并执行以下操作:
Find what: .*?,(.*)
Replace with: \1
Wrap around: checked
Regular expression: selected
. matches newline: unchecked
现在按Alt+A来替换所有出现的条目。
怎么运行的
这正则表达式
.*?,(.*)
匹配整行:.*?,
匹配第一个逗号之前的所有内容,包括逗号本身。.*
表示任意字符的出现次数,问号表示量词懒惰的,即匹配尽可能少的字符。(.*)
匹配第一个逗号后的所有内容。用括号括起来
.*
会将其转换为子模式,因此可以在替换字段中访问 mast。
\1
代表第一个子匹配(的匹配(.*)
)。因此,Notepad++ 会用第一个逗号后面的所有内容替换该行。
答案3
在 Windows 中,您可以按如下方式执行操作。
for /F "tokens=2,3,4,5,6 delims=," %i in (Input.csv) do @echo %i,%j,%k,%l,%m >> output.csv
我假设您只有 6 列。如果您有更多列,请尝试在 tokens 字段中使用 *。想法来自命令窗口
答案4
您应该能够将 CSV 加载到 Excel 中并让其将数字视为文本(防止其转换为科学数字)。
- 打开 Excel
- 数据选项卡
- 来自文本
- 选择分隔符
- 选择其他:“,”
- 对于所有列,请在数据预览窗口中选择它们,然后选择文本
- 删除你的列
- 另存为 CSV