Regex 如何使用正则表达式格式化此txt文件
有一个Regex 如何使用正则表达式格式化此txt文件,regex,Regex,有一个.txt文件,将数据折叠成一列,希望将其转换为.csv,以便将其导入DB表 源文件: 1000 AAAAAAAAAA 100,000.00 2000 BBBBBBBBBB 200,000.00 3000 CCCCCCCCCC 300,000.00 4000 DDDDDDDDDD 400,000.00 希望将其转变为: 1000,AAAAAAAAA,100,000.00 2000,BBBBBBBBB,200,000.00 3000,CCCCCCCCC,300,000.00 4000,DDD
.txt
文件,将数据折叠成一列,希望将其转换为.csv
,以便将其导入DB表
源文件:
1000
AAAAAAAAAA
100,000.00
2000
BBBBBBBBBB
200,000.00
3000
CCCCCCCCCC
300,000.00
4000
DDDDDDDDDD
400,000.00
希望将其转变为:
1000,AAAAAAAAA,100,000.00
2000,BBBBBBBBB,200,000.00
3000,CCCCCCCCC,300,000.00
4000,DDDDDDDDD,400,000.00
到目前为止,我已经尝试过这一点,但仍被困在那里:
find - ^(\d+)(\s)
substitue - $1,
这让我得到了这个输出:
1000,AAAAAAAAA
100,000.00
2000,BBBBBBBBB
200,000.00
3000,CCCCCCCCC
300,000.00
4000,DDDDDDDDD
400,000.00
我希望有人能指点我们前进
谢谢,
CH尝试以下查找和替换方法:
Find: (.*)\r?\n(.*)\r?\n(.*)(?:\r?\n|$)
Replace: $1|$2|$3\n
这种方法捕获三条连续线中的每一条,然后使用管道作为分隔符将它们连接到一条线中。请注意,此处不能使用逗号作为分隔符,因为您的一些数字数据已经使用逗号
按照下面的链接进行演示
如果每行包含3项,可以尝试根据空格拆分txt文件,然后写入csv文件 例如,在python中:
result = []
def writeToCSV(result):
with open('new.csv', 'a') as writeFile:
writer = csv.writer(writeFile)
for i in range(len(result)):
writer.writerow(result)
with open('yourfile.txt', 'r') as csvfile:
spamreader = csv.reader(csvfile, delimiter=' ', quotechar='|')
ind = 0
for row in spamreader:
result.append(row)
ind += 1
if(ind == 3):
ind = 0
writeToCSV(result)
result = []
您可以使用这样的正则表达式:
(\d+)\n(\w+)\n([\d,.]+)
使用此替换字符串:
$1,$2,$3
这里有些不对劲,因为在大多数数据库上,您应该已经能够导入此文件,使用空格字符作为列分隔符。你的数据库是什么?我现在正在使用ORCL数据库,我可以使用MySQL/MSSQL,任何一种方式都可以。也许我的方法是错误的,我想我无法将其导入db,因为每一行都折叠了3行,我想如何将其取消折叠是我的问题。我错调了,因为您的原始数据格式不正确。哦,对不起,我注意到我的格式没有保留,必须重新设置。抱歉,哈哈!!你真漂亮!!非常感谢,美女。我省略了告诉DB loader工具使用
|
作为分隔符的步骤,但我想你可以找出其余的:-)哈,是的,我一看到管道就想到了。我用你的代码完美地格式化了行数据,在顶部有另一个用户帮助我格式化的标题数据,如何将第二种格式仅应用于前7行,这样整个txt文件的列数和管道分隔数都是精确的。单靠Regex无法轻松做到这一点。我会使用Java、C#、Python或Perl等应用程序语言。也就是说,7行已经足够少了,如果你需要的话,你可以用翅膀和手来做。谢谢你Ryan,我也会试试这个!!感谢您的详细回复!谢谢你,费德里科!!工作起来很有魅力。我也会保留这个。非常感谢。在Windows上,行的结尾可能是\r\n
。