当前位置: 首页 > 知识库问答 >
问题:

Python中的正则表达式,用于删除逗号和空格

濮阳宁
2023-03-14

我有一个字符串,其中有多个逗号和空格作为单词之间的分隔符。以下是一些示例:

ex #1: string = 'word1,,,,,,,     word2,,,,,,     word3,,,,,,'  
ex #2: string = 'word1         word2       word3'  
ex #3: string = 'word1,word2,word3,'  

我想使用正则表达式将上述3个示例中的任何一个转换为“word1, word2, word3”-(注意:结果中最后一个单词后没有逗号)。

我使用了以下代码:

import re
input_col = 'word1    ,   word2     , word3,    '
test_string = ''.join(input_col)
test_string = re.sub(r'[,\s]+', ' ', test_string)
test_string = re.sub(' +', ',', test_string)
print(test_string)  

我得到的输出是“word1,word2,word3,”。而实际上我想要“word1,word2,word3”。单词3后没有逗号。

我应该使用什么样的正则表达式和re方法来实现这一点?

共有3个答案

党祖鹤
2023-03-14

一种方法是首先在适当的模式上拆分,然后通过逗号连接结果数组

string = 'word1,,,,,,,     word2,,,,,,     word3,,,,,,'
parts = re.split(",*\s*", string)
sep = ','
output = re.sub(',$', '', sep.join(parts))
print(output

word1,word2,word3

注意,我最后调用了re。sub删除可能的尾随逗号。

滑令
2023-03-14

程序末尾加上以下句子怎么样

re.sub(',+$','', test_string)

它可以删除字符串末尾的逗号

赫连瀚
2023-03-14

您可以使用拆分来创建数组和过滤器len

import re
s='word1    ,   word2     , word3,    '
r=re.split("[^a-zA-Z\d]+",s)
ans=','.join([ i for i in r if len(i) > 0 ])
 类似资料:
  • 问题内容: 我需要使用正则表达式在单词的 开头 和 结尾 处删除标点符号。似乎正则表达式将是最好的选择。我不想从“ you’re”之类的词中删除标点符号,这就是为什么我不使用.replace()的原因。 问题答案: 您不需要正则表达式即可执行此任务。使用有:

  • 问题内容: 我将如何编写一个正则表达式来删除所有以#开头并在该行结束处停止的注释-但同时要排除前两行,即 和 问题答案: 您可以通过使用解析Python代码来删除注释。以下是从docs对该示例进行的稍微修改的版本: 例如: 如果script.py包含 然后的输出是

  • 问题内容: 我一直试图在Java中编写一个正则表达式以删除下面括号中的所有内容,同时保留其他所有内容。 注意,括号可以嵌套,这就是为什么我的模式失败的原因 。有人能帮我吗?下面我试过了: 但这打印: d4 Nf6 2. c4 g6 3. Nc3 Bg7 4. e4 d6 5. Nf3 OO 6. Be2 e5 7. dxe5 dxe5 8. Qxd8 Rxd8 9. Bg5 Nbd7 10. OO

  • 问题内容: 在我的一个项目中,我不得不处理逗号分隔文件(CSV)。我必须基于逗号来拆分数据,而忽略引号内的逗号(即),因此我使用了另一个堆栈溢出问题(Java:拆分逗号分隔的字符串但忽略了引号中的逗号)中提到的表达式。一切工作都很好,直到最近我才注意到它不适用于下面提到的一种特定情况。 我需要在逗号上拆分的数据字符串为: 以我的理解为基础 拆分后的数据应返回一个大小为10的数组,该数组的后两个索引

  • 问题内容: 我正在用Java编写程序以接受查询。如果我有类似的查询 …我可以使用什么正则表达式将其转换为: …要么: 实际上,我想知道如何编写正则表达式以仅删除方括号内的空格。 问题答案: 假设括号正确平衡且没有嵌套括号,则以下内容将删除括号内(且仅在括号内)的所有空格: 它转变 进入 说明: