我想这应该很简单,但这是一个星期五的下午,我的大脑还不清楚。在
我正在编写一个小文件parse,下面的代码将一组字符串转换为一个数据帧,将字符串拆分。在
以下是一些字符串示例:
1. NC_002523_1 Serratia entomophila plasmid pADAP, complete sequence.
2. NZ_CM003366_0 Pantoea ananatis strain CFH 7-1 plasmid CFH1-7plasmid2, whole genome shotgun sequence.
3. NZ_CP014491_0 Escherichia coli strain G749 plasmid pG749_3, complete sequence.
4. NC_015062_0 Rahnella sp. Y9602 plasmid pRAHAQ01, complete sequence.
我没有料到第4个条目中sp
后面的.
,正如您在下面的代码中看到的那样,我对.
进行拆分,以获得排名的第一个整数。因此,我得到一个ValueError,列数超出预期。在
对于这个问题,我能想到的最简单的解决方案(直到其他边的情况破坏了它),就是替换除了第一次出现的所有.
。如何做到这一点?在
我看到有一个maxreplace
argument到{
有什么建议吗?(更健壮的解析方法也是一个有效的选择,但是我更改代码的次数越少越好)。在
使用正查找确保点前面有一个数字-
sep='(?<=\d)\.|\t'
例如:
印刷品
^{pr2}$为了安全起见,您可能希望在点旁边添加空格作为分隔符-
sep='(?<=\d)\.\s|\t'
-以减轻在描述中出现10.1
的情况。这可不是防弹的。在更安全的是,当您一次只处理一行数据时,您可以使用
sep='(?<=^\d)\.\s|\t'
添加一个断言,即数字也是字符串中的第一个字符。但是,这将在高于10的数字上崩溃。在幼稚的方法
除第一次出现外,每隔
.
替换这是一条单行线
^{pr2}$相关问题 更多 >
编程相关推荐