我正在处理一个.csv
文件,它总是有格式问题。在本例中,它是一个;
分隔的表,但有一行有时有分号,如下所示:
code;summary;sector;sub_sector
1;fishes;2;2
2;agriculture; also fishes;1;2
3;fishing. Extraction; animals;2;2
所以有三种情况:
我将.csv
转换为.txt
,然后将其作为字符串导入,然后编译这个正则表达式:
re.compile('([^\d\W]);\s+([^\d\W])', re.S)
应该这样做。我几乎成功地用分号代替逗号,做了以下工作:
def replace_comma(match):
text = match.group()
return text.replace(';', ',')
regex = re.compile('([^\d\W]);\s+([^\d\W])', re.S)
string2 = string.split('\n')
for n,i in enumerate(string2):
if len(re.findall('([^\d\W]);(\s+)([^\d\W])', i))>=1:
string2[n] = regex.sub(replace_comma, i)
这通常是有效的,但是当分号后面有两个空格时,逗号后面会留下一个\xa0
。这种方法有两个问题:
\xa0
字符?你知道吗你知道更好的方法吗?你知道吗
谢谢
编辑:我想要的输出是:
code;summary;sector;sub_sector
1;fishes;2;2
2;agriculture, also fishes;1;2
3;fishing. Extraction, animals;2;2
编辑:添加了关于将文件转换为字符串以便更好地操作的说明。你知道吗
在这种情况下,我不会使用
regex
、split()
和rsplit()
和maxpslit=
参数就足够了:印刷品:
相关问题 更多 >
编程相关推荐