从csv中删除不需要的逗号

从csv中删除不需要的逗号,csv,Csv,e、 g.有“2881423”,如何从中删除“,”。我有数百万的数据需要处理。是否可以执行批处理操作?所以我可以使用任何工具,无论是PC还是Mac "Position","Value", "1","1", "2","1", "3","1", "4","2", "5","2", 与上面类似的是csv中的一些片段。以下代码将完成此工作-它将循环遍历文件夹中具有给定掩码的所有文件: Sub RemoveCommas() Dim RegX_Comma As Object ' Dim FileSt

e、 g.有“2881423”,如何从中删除“,”。我有数百万的数据需要处理。是否可以执行批处理操作?所以我可以使用任何工具,无论是PC还是Mac

"Position","Value",
"1","1",
"2","1",
"3","1",
"4","2",
"5","2",


与上面类似的是csv中的一些片段。

以下代码将完成此工作-它将循环遍历文件夹中具有给定掩码的所有文件:

Sub RemoveCommas()

Dim RegX_Comma As Object
'
Dim FileStream As Object
Dim FileContent As String
Dim SourceFolder As String
Dim FileName As String
'
Set RegX_Comma = CreateObject("VBScript.RegExp")
RegX_Comma.Pattern = "(?<=\d),(?=\d)" 'Comma between any digits
RegX_Comma.IgnoreCase = True
RegX_Comma.Global = True

Set FileStream = CreateObject("ADODB.Stream")
SourceFolder = "D:\DOCUMENTS\" 'Must be specified with trailing "\"

FileName = Dir(InputFolder & "*.txt") 'Specify ANY mask using wildcards, e.g. "*.csv*
Do While FileName <> ""

    FileStream.Open
    FileStream.Charset = "ASCII" 'Change encoding as required
    FileStream.LoadFromFile (SourceFolder & FileName)
    FileContent = RegX_Comma.Replace(FileStream.ReadText, "")
    FileStream.Position = 0
    FileStream.WriteText FileContent
    FileStream.SetEOS
    FileStream.SaveToFile SourceFolder & FileName, 2 'Will overwrite the existing file
    FileStream.Close

FileName = Dir
Loop

End Sub
Sub-RemoveCommas()
Dim RegX_逗号作为对象
'
将FileStream设置为对象
将文件内容设置为字符串
将SourceFolder设置为字符串
将文件名设置为字符串
'
设置RegX_逗号=CreateObject(“VBScript.RegExp”)
RegX_Comma.Pattern=“(?在Python中:

import csv
with open("myfile.csv", "rb") as infile, open("output.csv", "wb") as outfile:
    reader = csv.reader(infile)
    writer = csv.writer(outfile)
    for row in reader:
        writer.writerow(item.replace(",", "") for item in row)

因为您的目标是在R中使用数据,所以您可以在将数据读入R后进行替换:

df <- Path/To/File.csv
df$varname <- as.numeric(gsub(",", "", df$varname))

df您将如何处理这些数据?您是否将其导入数据库。或者您可以使用的任何编程语言。请让我们知道。我需要在另一个名为R的软件中进行分析。它不允许有带逗号的数字。我对PHP一点也不熟悉,但这将从数据库中删除所有逗号字符串,而我们只需要删除1000个分隔符…或者我没有任何线索?@PeterL.:不,这将只删除数千个分隔符。我正在使用Python的
csv
模块读取csv文件(因为引用的csv字段可能包含字段分隔符、换行符、转义引号等),所以我的正则表达式只需要处理字段内容。然后我再次使用它将格式正确的CSV文件写回磁盘。哦,我明白了,PHP规则)同样的工作也会处理我的VBA代码,但你只需要4行PHP代码,而不是我的整个页面。)@PeterL。我不同意:Python规则!:)这不会也会删除其他字符串中的逗号(“例如,大韩民国)?Peter L的回答更进一步,并规定它只应在分隔为数字时删除逗号。我们可以在Python中这样做,但它不会像这个回答那样紧凑。我想你的意思是
(?@TimPietzcker坦白说正则表达式还不是我的强项,但我测试了
(?!\d),(?=\d)
使用示例文件(答案中的链接),它做了正确的工作。
(?!\d)
断言下一个字符不是数字,这总是正确的,因为您的正则表达式要求下一个字符是逗号。您应该检查上一个字符是否是数字。@TimPietzcker谢谢,更新了代码。您能为这种情况推荐一个简短的页面吗?有很多在线正则表达式手册,但它们都是(简短或过于复杂)
df <- Path/To/File.csv
df$varname <- as.numeric(gsub(",", "", df$varname))