我有一个名为new.csv的csv文件,我正在尝试删除称为代码的特定列中的所有前导0。
id,name,code <br>
0,kevin,010 <br>
1,john,011 <br>
2,casey,020 <br>
3,micheal,030
这只是csv文件外观的一个示例,但几乎有1000行。我只想从代码列中删除前导0。
我正在尝试找到一种解决方案,我也可以编辑整个专栏以供将来参考。例如,假设我要从列中删除前导字符“ k”。
我在网上看到了一些示例,但是没有用。
这是下面的
import pandas as pd
import sys
with open('new.csv') as infile:
title = next(infile)
infile.seek(0)
table = pd.read_csv(infile)
table.rename(columns={'Unnamed: 2':''}, inplace=True)
table['code'] = table['code'].str.replace("0", "")
sys.stdout.write(title)
table.to_csv(sys.stdout, ',', index=False)
您可以使用正则表达式re.sub
轻松替换前导零。使用此正则表达式,
0+([1-9][0-9]*)
并\1
基本替换为group1内容
试试这些Python代码,
import re
s = '''id,name,code <br>
0,kevin,010 <br>
1,john,011 <br>
2,casey,020 <br>
3,micheal,030'''
print(re.sub(r'0+([1-9][0-9]*)', r'\1', s))
打印不带前导零的数字,
id,name,code <br>
0,kevin,10 <br>
1,john,11 <br>
2,casey,20 <br>
3,micheal,30
编辑:
您可以创建这种函数,该函数将文件名作为参数并使用名称生成一个新文件。 inputfilename.out
import re
from shutil import move
from os import remove
def remove_leading_chars(inputfile):
with open(inputfile, 'r', encoding="utf-8") as infile, open(inputfile+'.out', 'w', encoding="utf-8") as outfile:
for s in infile.readlines():
s = re.sub(r',m+', r',', s)
outfile.write(s)
remove_leading_chars('data.txt')
remove('data.txt')
move('data.txt.out', 'data.txt')
print('writing done')
输入文件的内容 data.txt
id,name,code <br>
0,mmmkevin,010 <br>
1,mmmjohn,011 <br>
2,mmmcasey,020 <br>
3,mmmicheal,030
覆盖data.txt
文件的内容
id,name,code <br>
0,kevin,010 <br>
1,john,011 <br>
2,casey,020 <br>
3,icheal,030
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句