我有一个很大的纯文本文件,我必须在Python3中‘清理’它。
现在,我将它读入一个包含以下字符串的列表:
['[chr10:43612033[C', '[chr10:61665880[G', 'C[chr20:3835205[', ']chr20:3870375]T', 'G]chr6:117650611]']
我的目标是将它变成一个仅包含中间部分'chr_xx:number'
的字符串的列表。这意味着我需要找到一种方法,从原始字符串的开头和结尾删除1个或2个字符。
['chr10:43612033', 'chr10:61665880', 'chr20:3835205', 'chr20:3870375', 'chr6:117650611']
我在这里的问题是,我不能像模式一样按索引切片:
CHR1
或
CHR22
或
CHRX
或
CHRY
:
后面的部分可以是最多跨越9位的任何整数。因此,我不能仅仅通过删除前x个字符或最后x个字符来进行切片。
这是因为有时我的相关字符串前面有2个字符,有时只有一个字符。如:
<any_letter>]chr10:<the_number>
或
]chr10:<the_integer>
或者相同的故事,但带有开头的方括号[
。
字符串的最后部分也是如此。在我著名的1到9位数的任意长度的整数后面,我得到了]
或仅有一个]
或相同的模式,但带有开头的方括号。
有什么高雅的想法吗?
正如注释中所建议的,您可以通过使用以下模式来简单地使用regex
:
chr<digits>or<XY>:<digits>
如果您想了解更多关于正则表达式的信息,请查看以下内容
下面是一个工作示例:
import re
strings = [
'[chr10:43612033[C',
'[chr10:61665880[G',
'C[chr20:3835205[',
']chr20:3870375]T',
'G]chr6:117650611]',
'G]chrX:117650611]',
'G]chrY:117650611]',
]
print([re.search(r"chr(\d+|[X-Y]):\d+", s).group(0) for s in strings])
输出:
['chr10:43612033', 'chr10:61665880', 'chr20:3835205', 'chr20:3870375', 'chr6:117650611', 'chrX:117650611', 'chrY:117650611']
问题内容: 背景: 示例列表: 我想检索一个子串是否匹配的元素,例如 码: 如果列表中的任何元素包含模式,则上面的命令会打印出来。 我想打印与子字符串匹配的元素。因此,如果我要检查,我只想从列表中打印。 问题答案: print [s for s in list if sub in s] 如果要用换行符分隔它们: 完整示例,不区分大小写:
我有一个HashMap,里面有键和值。我想用字符串中映射的值替换键。 在字符串中,键被写成@keyname或@“keyname”,这些应替换为map.get(“keyname”) 假设我们的地图是这个 所以如果我们处理字符串“Hello world,Iam@key1 years old.”,它将变成“Hello world,Iam 2 years old.”。 我们可以用@“key1”代替@key
我有超过15个字符串列表,每个列表包含几个不同的代码。每个列表包含一种特定类型的代码。我有一个输入代码,必须找出该输入代码属于哪个列表,并根据结果返回一个特定字符串。我用if,else if来做这个。下面是示例代码 每个列表如下所示:公共静态列表codeTypeOneList=新ArrayList(); (其他代码类型的类似列表) 有没有更好的方法来实现这一点?谢谢
问题内容: 我需要有关正则表达式的帮助:我正在尝试检查一个句子是否包含特定单词。 让我们以这个主题的标题为例: “正则表达式以查找字符串中的特定单词” 我需要查找它是否包含 if ,在这种情况下它是错误的。 我无法使用包含的方法,因为在这种情况下它将返回true( 如果为 * ic, 则为 spec * ) 我当时在考虑使用方法匹配,但我有点正则表达式。 基本上,匹配方法输入中的正则表达式需要指定
我需要一些正则表达式方面的帮助:我正在尝试检查一个句子是否包含特定的单词。 让我们以本主题的标题为例: “在字符串中查找特定单词的正则表达式” 我需要找出它是否包含if这个词,在这个例子中它是假的。 我不能使用方法包含,因为它在这种情况下会返回true(规范*if*ic) 我在考虑使用matches方法,但我对正则表达式有点不在行。 基本上,匹配方法的输入中的正则表达式需要指定在我要查找的单词之前
问题内容: 如何将列表中的字符串转换为正确的列表? 我对此感到厌倦,但并非我所期望的: 我想要这样: 谢谢 问题答案: 使用literal_eval从AST模块: 与不同,literal_eval可安全地用于用户字符串或其他未知字符串源。它只会将字符串编译成基本的python数据结构-其他所有方法都会失败。 或者,如果您的字符串就是这样(即,没有嵌入的逗号或在带引号的字符串内解析的意思),则可以强