gpt4 book ai didi

python - 如何删除字符串中的标点符号并在执行转换后将其重新插入

转载 作者:行者123 更新时间:2023-12-01 00:38:29 26 4
gpt4 key购买 nike

我有一个包含以下字符串值的 pandas 系列(为简单起见,我选择将其显示为列表):

['quiero ir desde Calle Diagonal, 100, Barcelona, hasta Diagonal, 200, Barcelona',
'quiero ir desde Plaza Catalunya, Barcelona, Barcelona, hasta Torrent Olla 218, Barcelona',
'quiero ir desde Calle de Alcalá, 37, Madrid, hasta Puerta del Sol, 7, Madrid',
'quiero ir desde Gran vía Corts Catalanes 290, Barcelona, hasta Plaza universitat, Barcelona',
'quiero ir desde Carrer Rocafort, 160, Barcelona, hasta Plaça universitat, Barcelona',
'quiero ir desde Calle paris, 62, Barcelona, hasta Entença metro, Barcelona',
'quiero ir desde Urgell 1, Barna, hasta Paral.lel 190, Barna',]

我想删除这里重复的单词,但要做到这一点,我需要先删除标点符号:

# Remove punctuation

import string

l = []

for i in df["origin_destination"]:
l.append(i.translate(str.maketrans('', '', string.punctuation)))

现在我可以删除重复的单词:

# Remove Duplicates

def unique_string(l):
ulist = []
[ulist.append(x) for x in l if x not in ulist]
return ulist

no_dup = []

for i in l:
no_dup.append(' '.join(unique_string(i.split())))

这是我现在的结果:

['quiero ir desde Calle Diagonal 100 Barcelona hasta 200',
'quiero ir desde Plaza Catalunya Barcelona hasta Torrent Olla 218',
'quiero ir desde Calle de Alcalá 37 Madrid hasta Puerta del Sol 7',
'quiero ir desde Gran vía Corts Catalanes 290 Barcelona hasta Plaza universitat',
'quiero ir desde Carrer Rocafort 160 Barcelona hasta Plaça universitat',
'quiero ir desde Calle paris 62 Barcelona hasta Entença metro',
'quiero ir desde Urgell 1 Barna hasta Parallel 190',]

没关系,我现在的问题是我需要保留标点符号,但我还没有看到任何方法可以删除重复的单词而不删除字符串中的标点符号。所以我的问题是:

  1. 有没有办法从字符串中删除重复的单词而不删除标点符号?如果是这种情况该怎么办?

  2. 如果第一个问题的答案是否定的,有什么办法可以将标点符号重新插回到原来的位置吗?如果是的话我该怎么做?

提前非常感谢

最佳答案

看起来你需要。

例如:

import string
punc = string.punctuation

data = ['quiero ir desde Calle Diagonal, 100, Barcelona, hasta Diagonal, 200, Barcelona',
'quiero ir desde Plaza Catalunya, Barcelona, Barcelona, hasta Torrent Olla 218, Barcelona',
'quiero ir desde Calle de Alcalá, 37, Madrid, hasta Puerta del Sol, 7, Madrid',
'quiero ir desde Gran vía Corts Catalanes 290, Barcelona, hasta Plaza universitat, Barcelona',
'quiero ir desde Carrer Rocafort, 160, Barcelona, hasta Plaça universitat, Barcelona',
'quiero ir desde Calle paris, 62, Barcelona, hasta Entença metro, Barcelona',
'quiero ir desde Urgell 1, Barna, hasta Paral.lel 190, Barna']

result = []
for i in data:
seen = set()
temp = []
for j in i.split():
val = j.strip(punc)
if val not in seen:
temp.append(j)
seen.add(val)
result.append(" ".join(temp))

print(result)

输出:

['quiero ir desde Calle Diagonal, 100, Barcelona, hasta 200,',
'quiero ir desde Plaza Catalunya, Barcelona, hasta Torrent Olla 218,',
'quiero ir desde Calle de Alcalá, 37, Madrid, hasta Puerta del Sol, 7,',
'quiero ir desde Gran vía Corts Catalanes 290, Barcelona, hasta Plaza '
'universitat,',
'quiero ir desde Carrer Rocafort, 160, Barcelona, hasta Plaça universitat,',
'quiero ir desde Calle paris, 62, Barcelona, hasta Entença metro,',
'quiero ir desde Urgell 1, Barna, hasta Paral.lel 190,']

关于python - 如何删除字符串中的标点符号并在执行转换后将其重新插入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57555146/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com