删除特定的csv文件中的前导0

克莱迪·齐亚

我有一个名为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)
Pushpesh Kumar Rajwanshi

您可以使用正则表达式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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章