为不需要的字符串和删除搜索.csv

时间:2015-09-16 09:22:50

标签: python regex csv

我在短.csv上运行测试: 这就是我的“原始”.csv的样子:

> print test.csv
> onü, toé, 112 #first line in .csv
> four, FIVE, seven #second line in .csv

我想读出来并做一些字符串格式化。

# -*- coding: utf-8 -*-
allowed = re.compile("[^0-9a-zA-Z\s,.:]")
myJoin = ""
with open("test.csv") as f:
    for i in f:
        splitted = i.split(",")
        myString = ",".join(splitted)
        myList = list(myString)
        for j in allowed.finditer(myString):
            x = int(j.start())
            del myList[x]

当我打印x时,我得到了这个输出:

> x 
> 2
> 3
> 8
> 9

我以为我在我的allowed中打了空白,逗号?! 我无法理解为什么它将这些标记为“不应该在那里”。此外,我无法直接将其写回.csv看起来像这样。

我的新人,“干净”.csv

> print test.csv
> on, to, 112 #first line in .csv
> four, FIVE, seven #second line in .csv

2 个答案:

答案 0 :(得分:0)

您可以使用Python的csv模块来帮助解决这个问题。以下内容可为您提供所需的结果:

import csv
import re

with open('input.csv', 'r') as f_input, open('output.csv', 'wb') as f_output:
    csv_input = csv.reader(f_input, skipinitialspace=True)
    csv_output = csv.writer(f_output)
    keep = re.compile(r'[^0-9a-zA-Z\s,.:]')

    for cols in csv_input:
        cols = [keep.sub('', col) for col in cols]
        csv_output.writerow(cols)

给你一个output.csv如下:

on,to,112
four,FIVE,seven

答案 1 :(得分:0)

与Martin Evans的回答没有什么不同,只是它使用了每个项目的替代品:

<p> This is my include file </p>

请注意,前导空格会在结果中消失,但这不是一件坏事。