【发布时间】:2015-09-16 09:22:50
【问题描述】:
我正在对 short.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
【问题讨论】:
-
使用
re.sub( r'[^0-9a-zA-Z\s,.:]', '', i ) -
@hjpotter92 在哪里、如何以及为什么?
-
当您使用
[^创建模式时,您将否定集合内的字符。 -
@hjpotter92 当然可以。防御性编程。我希望删除该组字符/符号中 NOT 的所有内容!
-
确认一下,你想扔掉文件名并保留扩展名?