regex 在python中使用正则表达式将空格替换为逗号

voj3qocg  于 2022-11-18  发布在  Python
关注(0)|答案(4)|浏览(159)

我只想用逗号替换这个特殊模式的空格,而不是所有空格:“21311自动售货机”
输入:

["dog,cat ax 21311 asd","131 MAN"]

所需输出:

["dog,cat ax 21311,asd","131,MAN"]

编码:

input = ["dog,cat ax 21311 asd","131 MAN"]

new_list = []
for i in input:
    word = re.findall(r"\d*\s[a-zA-Z]*" , i)
    new_word = re.sub(word , r"\d*\s[a-zA-Z]*" , i)
    new_list = new_list + new_word
print(new_list)

我知道这是错误的语法,但我不知道如何使用Regex或任何其他方法。
我使用Python 3和Jupyter笔记本。

mrfwxfqh

mrfwxfqh1#

试试看:

input = ["dog,cat,21311 asd", "131 MAN"]
print([data.replace(' ', ',') for data in input])
8cdiaqws

8cdiaqws2#

好了,现在您已经阐明了您的请求,假设您感兴趣的模式是

  • 一个或多个数字后跟一个空格,再后跟一个或多个ASCII字母 *

下面是正确的方法:

import re

pattern = re.compile(r"(\d+)\s([a-zA-Z])")
replacement = r"\1,\2"

inp = ["dog,cat ax 21311 asd", "131 MAN"]

out = [re.sub(pattern, replacement, s) for s in inp]

print(out)

re.sub函数在其repl参数中接受对匹配组的引用。我们将数字(1)和字母(2)分组,并将子字符串替换为这两个组,中间用逗号隔开。

czq61nw1

czq61nw13#

你使用的re.sub()的参数位置不对,正确的方法是像re.sub(regex, replace, string)那样调用它。而且你对输入的迭代也不正确。这才是正确的方法:

import re
input = ["dog,cat,21311 asd","131 MAN"]

new_list = []
for word in input:
    new_word = re.sub(r" " , ",", word)
    new_list.append(new_word)

print(new_list)
8dtrkrch

8dtrkrch4#

re.sub()解和正Lookahead和Lookbehind模式
第一个

相关问题