首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >正则表达式,将"22,09“改为"22.09”

正则表达式,将"22,09“改为"22.09”
EN

Stack Overflow用户
提问于 2010-11-28 02:35:54
回答 4查看 142关注 0票数 1

我正在将csv格式的数据集导入数据库。

csv文件的结构如下

零件编号,描述,Netto价格,Brutto价格,评论 11009,滚珠轴承,"22,09","38,05",“注意,这篇文章和koyo xxxxxx一样”

由于我还不熟悉正则表达式,有人能帮我一下吗?

或者为我编写perl脚本。

谢谢

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2010-11-28 02:58:19

没有必要这样做;它可以单独在MySQL中完成。

代码语言:javascript
复制
LOAD DATA INFILE 'data.csv'
INTO TABLE prices
FIELDS
  TERMINATED BY ','
  ENCLOSED BY '"'
(partno, desc, @net, @gross, comment)
SET
  net=REPLACE(@net, ',', '.'),
  gross=REPLACE(@gross, ',', '.'),
票数 3
EN

Stack Overflow用户

发布于 2010-11-28 02:46:37

如果您可以使用Vim (这是一个快速的开始)编辑CSV文件,那么在Vim中的这个命令将提供您想要的行为,假设输入是这样形成的("xx,yy""xx.yy"):

代码语言:javascript
复制
:%s/"\(\d\+\),\(\d\+\)"/"\1.\2"/g

然后,您可以点击:wq保存文件并退出程序。该正则表达式(/"(\d+),(\d+)"/)也应该作为接受正则表达式的其他程序(或语言)的起点。

票数 3
EN

Stack Overflow用户

发布于 2010-11-28 02:45:56

因此,只有在浮点数位于由双引号分隔的字符串中时,才需要替换逗号。这是您想要的regexp:

代码语言:javascript
复制
/(?<=")(\d+),(\d+)(?=")/

它只匹配{22;09}和{38;05}。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4295021

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档