首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Python中删除标点符号而不留空格

如何在Python中删除标点符号而不留空格
EN

Stack Overflow用户
提问于 2020-04-03 03:17:26
回答 2查看 454关注 0票数 0

我想删除文本中的某些标点符号。我可以删除我想要的字符,但它总是留下一个空格,而不是字符。

代码语言:javascript
复制
In { ) other news tonight,
a Constitutional { | / !! amendment

我有一个像上面这样的文本,当我处理它时,它变成了

代码语言:javascript
复制
In   other news tonight,
a Constitutional    !! amendment

而不是

代码语言:javascript
复制
In other news tonight,
a Constitutional !! amendment

下面是我的代码

代码语言:javascript
复制
for line in lines:
    exclude = set('"#$%&\()*+-/:<=>@[\\]^_`{|}')
    line = ''.join(ch for ch in line if ch not in exclude)

如何删除正在生成的空格?

EN

回答 2

Stack Overflow用户

发布于 2020-04-03 03:23:58

未创建任何空白空间。您的字符串在这些字符之间已有空格。删除这些字符不会删除它们之间的空格。一种可能的解决方案是,我假设您想要删除具有多个连续空间的任何区域。将您的代码替换为:

代码语言:javascript
复制
exclude = set('"#$%&\()*+-/:<=>@[\\]^_`{|}')
for line in lines:
    line = ''.join(ch for ch in line if ch not in exclude)
    line = ' '.join(line.split())

这将删除所有的双空格。

票数 1
EN

Stack Overflow用户

发布于 2020-04-03 03:24:04

您可以使用str.split方法拆分字符串,以便将多个空格视为一个空格,然后使用空格将结果列表重新合并为一个字符串:

代码语言:javascript
复制
exclude = set('"#$%&\()*+-/:<=>@[\\]^_`{|}')
for line in lines:
    line = ' '.join(''.join(' ' if ch in exclude else ch for ch in line).split())
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60999370

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档