对此可能有一个简单的解决方法,但我找不到它。我正在尝试删除字符串中的重复空格(实际上是一个句子)。
这句话是: ``想要我让我尼克斯·沃斯特尔滕(Bij dat verhaal)
这是我正在使用的代码。当我运行此命令时,它返回的句子中没有多余的空格,但每个字符后面都有一个逗号:
K,a,n,,m,e,,n,i,k,s,,v,o,o,r,s,t,e,l,l,e,n,,b,i ,j,,d,a,t,,v,e,r,h,a,a,l,,w,a,n,t
这可能是由于我正在写入一个csv文件吗?感谢您的帮助!
import csv, re
with open('spaties.csv', 'r', newline='') as readFile:
reader = csv.reader(readFile)
with open('spaties2.csv', 'w', newline='') as new_file:
writer = csv.writer(new_file)
for line in reader:
writer.writerow(line)
st = ''.join(line)
print(st)
st = re.sub("\s\s+", " ", st.strip())
print(st)
writer.writerow(st)
答案 0 :(得分:1)
您对re.sub
的呼叫很好,问题出在csv.writer
:
writerow
期望字符串可迭代,因此它正在遍历srting的字符并考虑每个字符不同的列。如果您只想按原样写入文本,请直接将其写入文件,而不使用csv.writer
。
您可能希望在每个元素上调用re.sub
,如下所示:
for line in reader:
writer.writerow(line)
st = [re.sub("\s+", " ", x) for x in line]
writer.writerow(st)
或者您必须在致电re.sub
之后拆分行:
for line in reader:
writer.writerow(line)
st = ','.join(line)
st = re.sub("\s+", " ", st)
# note: if the columns contain "," this might not produce the
# result you want!
writer.writerow(st.split(','))
答案 1 :(得分:0)
如果要从字符串中去除所有多余的空格,换行符,制表符等,可以使用:
s = 'Kan me niks voorstellen bij dat verhaal, want'
s = " ".join(s.split())
print(s)
输出:
Kan me niks voorstellen bij dat verhaal, want