从csv文件中查找特定长度的数字

tnkciper  于 2022-12-06  发布在  其他
关注(0)|答案(2)|浏览(170)

我正在处理一个客户的csv文件,其中包含大量数据。数据是从SQL数据库中提取的,因此逗号表示不同的列。在其中一列中有10位数字。由于某种原因,所有以0开头的10位数字都被转换为去掉0的9位数字。我需要找到所有这些示例,并在9位数字的开头插入一个0。
数据中的一个复杂情况是,另一列也包含9位数字,这些数字不需要修改。但是,我可以假设所有这些数字都以0开头,而我需要找到的所有数字都不以0开头。
我目前正在使用记事本++尝试修复此问题,并找到正则表达式\d{9},该表达式可查找所有9位数的数字,但这不是我要查找的内容
下面是一个数据显示方式的示例。需要转换所有9位数字的列在左侧,另一个包含9位数字的列在右侧。导致问题的数据示例可能是:
| 第1列|第2栏|
| - -|- -|
| 小行星2323| 002132413号|
| 小行星231985|第004542435号|
在本例中,我需要找到第1列的第二行,并在数字前面插入一个0。

ev7lccsx

ev7lccsx1#

  • 按Ctrl+H组合键
  • 查找内容:\b(?!0)\d{9}\b
  • 替换为:0$0
    ***滴答***回绕 *
    ***SELECT***正则表达式 *
  • 全部替换
    说明:
\b          # word boundary, make sure ae haven't digit before
(?!0)       # negative lookahead, make sure the next character is not 0
\d{9}       # 9 digits
\b          # word boundary, make sure ae haven't digit after

替换:

0           # 0 to be inserted
$0          # the whole match (i.e. 9 digts)

屏幕截图(之前):

屏幕截图(之后):

iszxjhcz

iszxjhcz2#

使用Notepad++执行CTRL + H(搜索和替换实用程序)。

  • 刻度Regular Expression
  • 找到什么?([^0-9])(\d{9})([^0-9])
  • 替换为?\10\2\3
    说明:

([^0-9])(\d{9})([^0-9])匹配两边各有一个非数字的9位数字(包括换行符/逗号等):

  • 每个(....)“捕获”一个组供以后使用(在“replace”中)。
  • [^0-9]是非数字字符
  • \d{9}是一个9位数字

\10\2\3是一个0,紧接着第一个捕获组\1(此处仅为一个字符),后跟9位数字(第二个捕获组:\2)和该数字之后的字符(第三个捕获组:\3)的数据。

限制:

它不会匹配文件开头(任何其他字符之前)或结尾(每个字符之后)的数字。在文件结尾添加换行符是一种解决方法,或者如果EOF之前没有换行符,则手动修复最后一个数字。

相关问题