如何将空格分隔的数据转换为csv格式-Python

如何将空格分隔的数据转换为csv格式-Python,python,regex,Python,Regex,我试图在字符串(文件)的前两个空格中添加逗号,然后在第三个空格中添加分号。我试图解决的问题是;通过使用这个RegX命令,它返回text=“example,text,example”。当然,这只会用逗号替换任何空格。如何使用regex执行下面的示例 示例文件 536924636 www.microsoft.com http://www.microsoft.com/pkiops/crl/MicW 536924733 www.microsoft.com http://www.micro

我试图在字符串(文件)的前两个空格中添加逗号,然后在第三个空格中添加分号。我试图解决的问题是;通过使用这个RegX命令,它返回
text=“example,text,example”
。当然,这只会用逗号替换任何空格。如何使用regex执行下面的示例

示例文件

536924636   www.microsoft.com   http://www.microsoft.com/pkiops/crl/MicW
536924733   www.microsoft.com   http://www.microsoft.com/pkiops/certs/Mi
536925898   crl.microsoft.com   http://crl.microsoft.com/pki/crl/product
536924636   www.microsoft.com   http://www.microsoft.com/pkiops/crl/MicW
536924733   www.microsoft.com   http://www.microsoft.com/pkiops/certs/Mi
536925898   crl.microsoft.com   http://crl.microsoft.com/pki/crl/product
536924636   www.microsoft.com   http://www.microsoft.com/pkiops/crl/MicW
536924733   www.microsoft.com   http://www.microsoft.com/pkiops/certs/Mi
编辑

536924636,www.microsoft.com,http://www.microsoft.com/pkiops/crl/MicW;536924733,www.microsoft.com,http://www.microsoft.com/pkiops/certs/Mi;536925898,crl.microsoft.com,http://crl.microsoft.com/pki/crl/product(etc..);
简而言之,我正在尝试使用正则表达式和Python来读取文本并将其转换为CSV格式

我如何做到这一点

谢谢

输出

536924636,www.microsoft.com,http://www.microsoft.com/pkiops/crl/MicW;536924733,www.microsoft.com,http://www.microsoft.com/pkiops/certs/Mi;536925898,crl.microsoft.com,http://crl.microsoft.com/pki/crl/product;536924636,www.microsoft.com,http://www.microsoft.com/pkiops/crl/MicW;536924733,www.microsoft.com,http://www.microsoft.com/pkiops/certs/Mi;536925898,crl.microsoft.com,http://crl.microsoft.com/pki/crl/product;536924636,www.microsoft.com,http://www.microsoft.com/pkiops/crl/MicW;536924733,www.microsoft.com,http://www.microsoft.com/pkiops/certs/Mi;
函数:join()

此函数返回一个字符串,它是传递序列中字符串的串联-
“separator”.join(sequence)

编辑:

读取文件

with open('filename.txt', 'r') as file:
    print("%s;" % ";".join([line.strip().replace("\t", ",") for line in file.readlines()]))
(?m)[^\S\r\n]+(?=(?:\S+[^\S\r\n]*)+$)


我在。

中演示了代码,但是为什么它必须是regex?
“{};”。格式(“;”。连接([x.replace(“,”),用于text.splitlines()中的x)
?看。@Aran Fey不一定是,你有更好的方法吗?应该是多行字符串吗?您是如何将其提供给解释器的(以当前形式)?使用
“{};”格式(“;”).join([x.replace(“\t”),“,”)表示文本中的x.splitlines())
这对上面的示例有效,但当我将其应用于文本文件时,我试图读取它却不起作用。它只是加了一个“;”在最后。我将更新上面的示例。这意味着您没有行;正确的?注意问题中的有效载荷吗?我已经更新了上面的示例;我希望这能解释得更清楚一点;现在检查一下。遗憾的是,这对我来说并不完全有效,它遗漏了逗号。示例:217636692 crl.microsoft.com www.microsoft.com;这将成功地在前2个空格中添加逗号,您是否可以在文件的最后一个单词中添加“;”号?这将解决我的问题,使用RegX@Ac3如果已将全文读入单个字符串,则可以使用
re.sub(r'(?m)(?=([^\S\r\n]+)\1(?)|[\r\n]+',lambda x:,“if x.group(1)else”;,text)
with open('filename.txt', 'r') as file:
    print("%s;" % ";".join([line.strip().replace("\t", ",") for line in file.readlines()]))