我想用字符串中的空格替换“ /”,除非它在“ mg”和“ number”之间
'ABACAVIR/LAMIVUDINE/ZIDOVUDINE MYLAN 300 mg/150 mg/300 mg, comprimé pelliculé'
成为
'ABACAVIR LAMIVUDINE ZIDOVUDINE MYLAN 300 mg/150 mg/300 mg, comprimé pelliculé'
以及如何处理多行数组
['ABACAVIR / LAMIVUDINE TEVA 600 mg / 300 mg,comprimépelliculé''ABACAVIR / LAMIVUDINE ZENTIVA 600 mg / 300 mg,comprimépelliculé']
答案 0 :(得分:7)
根据您的条件使用正则表达式模式。您可以使用以下构造:
mg
import re
my_string = 'ABACAVIR/LAMIVUDINE/ZIDOVUDINE MYLAN 300 mg/150 mg/300 mg, comprimé pelliculé'
print(re.sub('(?<!\bmg\b)\/(?![0-9])',' ',my_string))
#ABACAVIR LAMIVUDINE ZIDOVUDINE MYLAN 300 mg/150 mg/300 mg, comprimé pelliculé
答案 1 :(得分:3)
我想为初学者提供一个简单易读的解决方案,并且不使用任何导入模块。
在我的代码中,我只是使用for循环逐个字符地分析字符串,然后检查当前字符是否为“ /”。
我使用枚举是因为它允许我在迭代期间访问索引和当前字符的值。
如果找到“ /”,我使用Python's slicing检查“ mg”是否在其前面,并使用此信息将其替换为空白。
解决方案
data = ['ABACAVIR/LAMIVUDINE TEVA 600 mg/300 mg, comprimé pelliculé' 'ABACAVIR/LAMIVUDINE ZENTIVA 600 mg/300 mg, comprimé pelliculé']
new_data = []
for line in data:
result = ""
for key, value in enumerate(data):
if value == "/" and data[key-2:key] != "mg":
result += ' ' # replace with white space
else:
result += value
new_data.append(result)
print(new_data)
输出
['ABACAVIR/LAMIVUDINE TEVA 600 mg/300 mg, comprimé pelliculéABACAVIR/LAMIVUDINE ZENTIVA 600 mg/300 mg, comprimé pelliculé']
答案 2 :(得分:2)
您可以找到除/
以外的所有mg/number
项,然后替换它们:
import re
string = 'ABACAVIR/LAMIVUDINE/ZIDOVUDINE MYLAN 300 mg/150 mg/300 mg, comprimé pelliculé'
result = re.sub('\/[^mg\/\d+]', ' ', string)
输出:
ABACAVIR AMIVUDINE IDOVUDINE MYLAN 300 mg/150 mg/300 mg, comprimé pelliculé