Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jsp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel 如何在URL中的日期前插入逗号?_Excel_Csv - Fatal编程技术网

Excel 如何在URL中的日期前插入逗号?

Excel 如何在URL中的日期前插入逗号?,excel,csv,Excel,Csv,所以我有大约8000个URL,其中大多数在日期部分之前缺少一个逗号,我需要那个该死的逗号来通过我的本科考试 示例: …员工声明法律投诉和动议应为:动议 …/wiki/xina_Presidential_Express_18_Jun_2009应该是:Express,_18_Jun_2009 …2008年12月23日执法指南应为:2008年12月23日执法 等等。我需要在Excel中自动插入逗号。这可能吗?你能告诉它在文本前加个逗号吗?当日期不同时,替换将不起作用 最大的问题是,我不是一个程序员。我

所以我有大约8000个URL,其中大多数在日期部分之前缺少一个逗号,我需要那个该死的逗号来通过我的本科考试

示例:

…员工声明法律投诉和动议应为:动议 …/wiki/xina_Presidential_Express_18_Jun_2009应该是:Express,_18_Jun_2009 …2008年12月23日执法指南应为:2008年12月23日执法

等等。我需要在Excel中自动插入逗号。这可能吗?你能告诉它在文本前加个逗号吗?当日期不同时,替换将不起作用

最大的问题是,我不是一个程序员。我是政治学专业的本科生,试图对维基解密进行统计分析


顺便说一句:问题不是我从CSV导入Excel时出错,其他地方有很多逗号。问题是我使用import.io作为一个datascraper,这可能是他们的错误

如果CSV文件支持Perl样式的正则表达式,您可以在其上使用文本编辑器,并告诉它替换

_(?:\d{1,2}_[A-Za-z]{3}_)?(?:19|20)\d{2}\b

对于,\0.

如果多数采用“2008年12月23日”的格式,我假设日期总是在字符串的末尾。。试一试

12是指日期中的字符数,即日期格式“\u 23\u Dec\u 2008”为12 1表示要修改的字符串的起始字符,即从_ 0表示要修改的字符数,即无 ,在下划线前添加逗号 只需要将第一行修改为不同长度的日期


希望这有助于你在评论中提到的大约有20种不同的格式。这里有三个两个,因为您的示例对d和dd的定义不明确

仔细计划你的攻击。仔细观察20多种格式,确保其中一种格式不能取代另一种格式的假阳性。通常有一个规定的顺序,更换必须按顺序进行

例如,在上面使用的三种格式掩码中,如果_dd_uu只是_dd,那么20和xlPart将取代任何2000、2001、2002等等。请小心并保留一些备份


只是提醒一下我上面的评论;使用这些插入逗号,您需要使用文本限定符,这样在文本字段中间的逗号不会将该字段的值分解为两个字段。Excel应该在一个简单的“另存为”上为您执行此操作► .CSV,但它会查看预设行数的数据,以确定是否在字段上使用带引号的标识符。这个前瞻值可以通过注册表提高,但这通常是不必要的。

如果它们都是以2008年12月23日的格式设置的,日期总是两位数,我想你可以用excel来实现,但是如果格式不一致,我想你需要使用其他一些工具是的,它们不都是这样。但是如果只有>20种格式,那么我会一次又一次地做。如果是_23_Dec_2008格式,两位数字,文本,然后是四位数字,那么您将如何在excel中执行此操作?您可能没有考虑的一点是,整个值随后必须用文本标识符(如双引号)包装,否则字段值将变成两个字段。如果将其放入Excel,则可以使用VBA修复它并将其导出回.CSV,其中双引号作为文本标识符,将每个可能包含逗号的字段括起来。可能是编辑器需要不同的反向引用语法,而不是\0,后者在UltraEdit或EditPad等编辑器中包含正则表达式的匹配文本这可能是我应该做的,但我不知道如何运行正则表达式——我还没有学会,而且在截止日期之前我没有时间。这就是为什么我迫切需要在excel中完成它。
=REPLACE(A1,FIND(RIGHT(A1,12),A1,0,",")
Sub fix_urls()
    Dim fw As String, rw As String, i As Long, iOldCalc As Long

    On Error GoTo Fìn
    Application.ScreenUpdating = False
    Application.EnableEvents = False
    Application.Calculation = xlCalculationManual

    With ActiveSheet.UsedRange.Cells
        'replace the days both ways as the sample data was ambiguous
        For i = 1 To 31
            fw = Format(i, "_00_")  'find what
            rw = Format(i, "\,_00_")  'replace with
             .Replace What:=fw, Replacement:=rw, LookAt:=xlPart, MatchCase:=False
            fw = Format(i, "_0_")  'find what
            rw = Format(i, "\,_0_")  'replace with
             .Replace What:=fw, Replacement:=rw, LookAt:=xlPart, MatchCase:=False
        Next i
        For i = 2000 To 2014
            fw = Format(i, "_0000")  'find what
            rw = Format(i, "\,_0000")  'replace with
             .Replace What:=fw, Replacement:=rw, LookAt:=xlPart, MatchCase:=False
        Next i
    End With

Fìn:
    Application.Calculation = xlCalculationAutomatic
    Application.EnableEvents = True
    Application.ScreenUpdating = True
End Sub