![](/img/trans.png)
[英]Remove all elements of a string list in python if they contain a given phrase
[英]Remove all words in a string that contain any given substrings using python
我有一个 .csv 文件,其中有一列包含文本。 对于此列中的每个项目,都有一个基因名称和一个日期(例如“CYP2C19, CYP2D6 07/17/2020”)。 我想从该列中的所有值中删除日期,以便只有两个基因可见(输出:'CYP2C19,CYP2D6')。 其次,在某些框中既有基因名称,也有没有建议的指示('CYP2C9 08/19/2020(无建议')。在这些情况下,我想删除日期和声明无推荐(输出:'CYP2C19,CYP2D6')。
我尝试使用下面的代码删除包含单个字符串的斜杠的任何文本(我还没有尝试对整个.csv 文件进行任何操作)。 然而,不幸的是,它从日期离开了 07。
import re
pattern = re.compile('/(?:[a-zA-Z]|[0-9]|[$-_@.&+]|[!*\(\),]|(?:%[0-9a-fA-F][0-9a-fA-F]))+')
s = 'CYP2C19, CYP2D6 07/17/2020'
pattern.sub('', s)
Output:'CYP2C19,CYP2D6 07'
我认为您可以获取每一列然后将其拆分:例如,让我们采用以下字符串: column = ' CYP2D6 07/17/2020' 您可以这样做: m = column.split()
然后您将获得:一个类似的列表: m=['CYP2D6','07/17/2020']
之后你可以简单地采取: gene = m[0]
一种方法是从字符串中取出日期,然后随意拆分。 请注意,这适用于任意数量的日期:
import re
x = 'CYP2C19, CYP2D6 07/17/2020'
x = re.sub(r'\s*\d{2}/\d{2}/\d{4}', "", x)
如果您总是知道只有一个空格将您想要的术语和日期分开,您可以将\s*
替换为 \ \s
,但我认为没有理由这样做。
请注意,您现在可以通过分隔符将其拆分,在您的问题中,分隔符实际上是一个逗号后跟一个空格
result = x.split(", ")
# ['CYP2C19', 'CYP2D6']
尽管在您的 csv 中,您可能会发现它只是一个逗号(通常是 CSV)。
结合以上步骤:
import re
x = 'CYP2C19 08/15/1972, CYP2D6 07/17/2020'
x = re.sub(r'\s*\d{2}/\d{2}/\d{4}', "", x).split(", ")
# ['CYP2C19', 'CYP2D6']
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.