我正在从CSV文件中导入一些数据,并且数字大于1000变成1,100等。
从中删除引号和逗号的一种好方法是什么,以便我可以将其放入int字段中?
编辑:
数据实际上已经在MySQL表中,因此我需要能够使用SQL。对不起,混淆了。
问题来源于stack overflow
Daniel和Eldila的回答有一个问题:他们删除了整个文件中的所有引号和逗号。
当我必须要做类似的事情时,我通常要做的是首先用制表符替换所有分隔的引号和(通常)分号。
搜索: “;” 替换: \ t 由于我知道受影响的值将在哪一列中,因此我将再次搜索并替换:
搜索: ^([\ t] +)\ t([\ t] +)\ t([0-9] +),([0-9] +)\ t 替换: \ 1 \ t \ 2 \ t \ 3 \ 4 \ t ...给定带逗号的值在第三列。
您需要以“ ^”开头,以确保它从行首开始。然后,您重复([0-9] +)\ t的次数就是您想保留的原样。
([[0-9] +),([0-9] +)在存在一个数字,一个逗号和另一个数字的位置搜索值。
在替换字符串中,我们使用\ 1和\ 2只是保留已编辑行中的值,并用\ t(制表符)将它们分开。然后,我们将\ 3 \ 4(之间没有制表符)放在数字的两个组成部分之间,并且不带逗号。之后的所有值将保留。
如果您需要文件中用分号分隔元素,则可以继续使用分号替换选项卡。但是,如果您忽略引号,则必须确保文本值本身不包含任何分号。这就是为什么我更喜欢使用TAB作为列分隔符。
我通常在支持RegExp的普通文本编辑器(EditPlus)中执行此操作,但是相同的regexp可以在任何编程语言中使用。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。