Notepad++ - 删除逗号分隔文件中的第一列

Notepad++ - 删除逗号分隔文件中的第一列

我有一个大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 中并让其将数字视为文本(防止其转换​​为科学数字)。

  1. 打开 Excel
  2. 数据选项卡
  3. 来自文本
  4. 选择分隔符
  5. 选择其他:“,”
  6. 对于所有列,请在数据预览窗口中选择它们,然后选择文本
  7. 删除你的列
  8. 另存为 CSV

相关内容