首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >python中紧跟在特定字符串之后的索引

python中紧跟在特定字符串之后的索引
EN

Stack Overflow用户
提问于 2021-02-25 09:05:29
回答 2查看 35关注 0票数 0

我有一个以制表符分隔的文件,其值如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
12  6814296 2   192 C:0.911458  T:0.0885417
12  6814328 2   192 C:1 T:0
12  6814345 2   192 C:1 T:0
12  6814360 2   192 C:1 T:0
12  6814381 2   192 G:1 A:0
12  6814396 2   192 C:1 A:0
12  6814397 2   192 G:0.989583  A:0.0104167
12  6814464 2   192 T:1 C:0
12  6814468 2   192 C:0.927083  TCCC:0.0729167
12  6814486 2   192 C:1 T:0
12  6814551 2   192 G:1 C:0
12  6814567 2   192 A:1 G:0
12  6814589 2   192 C:0.989583  T:0.0104167
12  6814619 2   192 G:1 A:0
12  6814663 2   192 A:1 G:0
12  6814732 2   192 C:1 T:0
12  6814752 4   192 CTTT:0.979167   CTTTTT:0    CT:0.015625 C:0.00520833
12  6814786 2   192 C:1 <CN0>:0
12  6814798 2   192 C:0.984375  T:0.015625
12  6814828 2   192 C:0.989583  G:0.0104167
12  6814951 2   192 G:1 C:0

在这个文件中,我必须创建一个csv文件,其中每行有3个逗号分隔值。

下面是我的代码:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
file1 = open('/home/aahm/Documents/gene1.frq', 'r')
input_data = file1.readlines()
for line in input_data:
    rm_newline = line.strip('\n')
    comma_separated = rm_newline.split('\t')
    a = comma_separated[0]
    b = comma_separated[1]
    c = comma_separated[-1]
    d = c[2:]
    if comma_separated [2] == '2':
        e = a + ','+ b +',' + d
        print (e)
    elif comma_separated [2] == '3':
        f = comma_separated[-1]
        g = f[2:]
        h = comma_separated[-2]
        i = h[2:]
        if g > i:
            j = a + ','+ b +',' + g
            print (j)
        else:
            k = a + ','+ b +',' + i
            print (k)
    elif comma_separated [2] == '4':
        l = comma_separated[-1]
        m = l[2:]
        n = comma_separated[-2]
        o = n[2:]
        p = comma_separated[-3]
        q = p[2:]
        if m > o and m > p:
            r = a + ','+ b +',' + m
            print (r)
            
        elif o > m and o > p:
            s = a + ','+ b +',' + o
            print (s)
            
        elif p > m and p > o:
            t =  a + ','+ b +',' + p
            print (t)

代码运行得很好,除了我使用了以下索引:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
d = c[2:]
g = f[2:]
i = h[2:] 

等。

对于输入文件中的第6列、第7列和第8列,我只需要输出数字。但是,当':‘前面的字符串大于1时,我的索引会给出字符串和某些行的数字。

最后一列中的值是TCCC:0.0729167,对应一行。当索引'd = c2:‘用于索引时,我得到CC: 0.0729167作为输出,而我只需要0.0729167作为输出。

我被这个问题困住了,完全没有任何关于如何继续的提示。如果有任何帮助,我将非常感激。谢谢!

EN

回答 2

Stack Overflow用户

发布于 2021-02-25 09:12:48

您将列表从第三个字符(包含)切分到末尾,这将在您的示例中显示“CC:0.0729167”。正如其他人在评论中所说,您可以只使用yourstring.split(":")[1]来根据冒号的位置拆分字符串,然后通过使用[1]指定其索引来检索字符串的后半部分。

票数 1
EN

Stack Overflow用户

发布于 2021-02-25 09:58:12

根据其他人的评论,如果您在列数据中保留了一个":“,则需要将其拆分。然而,这里的代码已经相当不透明了--所有的字母变量使得我们很难看到一段简单的代码到底想要做什么。为了避免更糟糕的情况,在下面的示例中,我定义了一个简单的函数getnum,您可以向它提供一个字段,如果需要,它将为您执行拆分。当然,如果字段有多个":“字符,这将不起作用,但修改getnum将非常容易。然后,我修改了代码,通过这个getnum函数运行每个字段。

为了让自己的生活更轻松,我鼓励您使用比a、b、c等更有意义的变量名。此外,这里和那里的一些解释注释将会有很大的帮助-我认为有了这些,你可能已经能够自己解决这个问题了!

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
input_data = file1.readlines()

# process a field to only use numbers after a :
def getnum(src):
    if ":" in src:
        return src.split(":")[1]
    else:
        return src

for line in input_data:
    rm_newline = line.strip('\n')
    comma_separated = rm_newline.split('\t')
    a = getnum(comma_separated[0])
    b = getnum(comma_separated[1])
    c = getnum(comma_separated[-1])
    d = c[2:]
    if comma_separated [2] == '2':
        e = a + ','+ b +',' + d
        print (e)
    elif comma_separated [2] == '3':
        f = getnum(comma_separated[-1])
        g = f[2:]
        h = getnum(comma_separated[-2])
        i = h[2:]
        if g > i:
            j = a + ','+ b +',' + g
            print (j)
        else:
            k = a + ','+ b +',' + i
            print (k)
    elif comma_separated [2] == '4':
        l = getnum(comma_separated[-1])
        m = l[2:]
        n = getnum(comma_separated[-2])
        o = n[2:]
        p = getnum(comma_separated[-3])
        q = p[2:]
        if m > o and m > p:
            r = a + ','+ b +',' + m
            print (r)
            
        elif o > m and o > p:
            s = a + ','+ b +',' + o
            print (s)
            
        elif p > m and p > o:
            t =  a + ','+ b +',' + p
            print (t)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66365419

复制
相关文章
python中删除特定字符串
import re text = ‘wo,didi;wode,;wode’ text0 = text.replace(‘didi’, ”) print(re.sub(‘[,;]’, ‘ ‘, text0))
全栈程序员站长
2022/09/02
3.4K0
Python字符串中删除特定字符的方法
这篇文章主要介绍了Python字符串中删除特定字符的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧 分析
全栈程序员站长
2022/06/28
6.5K0
Python字符串中删除特定字符的方法
【说站】python截取字符串中特定部分
本文教程操作环境:windows7系统、Python 3.9.1,DELL G3电脑。
很酷的站长
2022/11/23
2.2K0
【说站】python截取字符串中特定部分
在字符串中删除特定的字符
题目:输入两个字符串,从第一字符串中删除第二个字符串中所有的字符。例如,输入”They are students.”和”aeiou”,则删除之后的第一个字符串变成”Thy r stdnts.”。 首先我们考虑如何在字符串中删除一个字符。由于字符串的内存分配方式是连续分配的。我们从字符串当中删除一个字符,需要把后面所有的字符往前移动一个字节的位置。但如果每次删除都需要移动字符串后面的字符的话,对于一个长度为n的字符串而言,删除一个字符的时间复杂度为O(n)。而对于本题而言,有可能要删除的字符的个数是n,因此该
猿人谷
2018/01/17
9K0
java中替换字符串特定字符replace,replaceAll,replaceFirst
String number = "123,456,5234,52345,63456,7456,7";
用户7886150
2021/04/07
2.6K0
原 状态机 搜索字符串中的特定占位符
问题:xz[[cenvENVzxcENV[      fffff  ]dsbgENV[fecccccc]nqe  W3]NBENV[]ZXC   这个字符串中总共有三个变量区,规定ENV[]  方括号中间包含的即是变量,那么使用的过程中需要找到这个变量在替换。 使用状态机首先需要定义系统的状态的个数及状态之间的转换过程及条件 本例中总共定义了6种状态 common char:普通字符串 env:变量内容 over:状态机终止(字符串超长)  maybe:可能属于变量 maybeOver:后面紧跟
魂祭心
2018/05/17
3.3K0
Python 基础 字符串的索引与切片
字符串是一个字符序列,那么如何访问字符串中的一个或者多个字符呢?在Python中,可以通过索引和切片的操作来完成。
用户7886150
2021/01/13
1.3K0
【说站】python字符串索引的用法
1、从形式上不难看出,字符串中的字符也有顺序。字符串是字符的有序序列,所以也有索引。也可以根据索引取出一个字符。索引的使用与列表相同。
很酷的站长
2022/11/23
5710
【说站】python字符串索引的用法
php 截取特定字符串
1、php 截取特定字符后面的内容 可以使用函数strripos,获取一个字符串在另一个字符串中第一次出现的位置。
用户8099761
2023/05/11
1.4K0
如何使用VBA统计字符串中某个特定字符
如果要统计某单元格中指定的某特定字符的数量,可以使用LEN/SUBSTITUTE函数组合的经典公式(假设字符串位于单元格B2):
fanjy
2022/06/04
5.6K0
如何使用VBA统计字符串中某个特定字符
python读取特定的行
fr = open(filename) for line in fr.readlines():     if line.startswith("#"):         continue     else:         ## do something with line          ## could use fr.readlines()[1:]  from second line import linecache content_list = linecache.getlines(filenam
py3study
2020/01/13
4K0
flutter - 如何在 ListView 构建器中显示特定索引中的项目 原文 标签 flutter dart
我想开始显示索引5中的列表项 ListView.builder( itemCount: items.length, itemBuilder: (context, index) { return ListTile( title: Text('${items[index]}'), ); }, ); 最佳答案 看一下这个 ListView.builder( itemCount: items.length, itemBuilder: (context, index) { if(index < 5
徐建国
2021/08/30
6.3K0
字符串索引越界_字符串的索引和切片
数组test的长度为20 ,当我们去访问索引为21的,及第22个字符的时候会报StringIndexOutOfBoundsException,表示字符串索引越界
全栈程序员站长
2022/11/17
8880
【说站】python删除str中特定字符的方法
以上就是python删除str中特定字符的方法,希望对大家有所帮助。更多Python学习指路:python基础教程
很酷的站长
2022/11/23
3.5K0
python查询字符串中指定字符的索引
当你想查询一个字符串中指定字符的位置时,很容易就想到用index方法,但如果字符串有多个该字符,你会发现只能查到第一次出现的位置,而python是没有内置方法去解决这个问题的,所以需要自己去定义一个方法去查询。
狼啸风云
2021/01/13
1.9K0
python:删除列表中特定元素的几种方法
终于刷到一条不看答案就能轻松解出来的题目,更重要的是学习到了几种删除列表中元素的方法,值得做一下笔记
冰霜
2022/03/19
8.4K0
python:删除列表中特定元素的几种方法
【Python】掌握Python中的索引和切片
在Python中,像字符串或列表这样的有序序列的元素可以通过它们的索引单独访问。这可以通过提供我们希望从序列中提取的元素的数字索引来实现。另外,Python支持切片,这是一个特性,可以让我们提取原始sequence对象的子集。
黄博的机器学习圈子
2021/07/07
1.3K0
【Python】掌握Python中的索引和切片
Python 索引与切片之字符串
索引与切片之字符串 字符串的索引 , 获取 索引规则与列表相同 切片与索引的获取与列表相同 无法通过索引修改与删除 字符串不可修改 字符串的find与index函数 功能 获取元素的索引位置 用法 string.index(item) -> item:查询个数的元素,返回索引位置 string.find(item) -> item:查询个数的元素,返回索引位置 返回的是第一个字母的位置 区别 find如果获取不到,返回-1 index如果获取不到,直接报错 好题 list1 = [1, 2, 3,
Zkeq
2022/05/18
5960
FormattableString 取代特定区域字符串
有些软件系统是针对全球来开发的,因此一些字符串需要根据不同地区不同语言做出特定的处理。如果针对不同地区不同用语言分别编写字符串处理方法的话代码量是巨大的。那么这个时候我们可以用到内插字符串深层的特性,C# 会把内插字符串的结果隐式的转换成 string 或者 FormattableString 。 例如下面这个例子,内插字符串的结果将是 string 类型:
喵叔
2020/09/08
1.4K0
Java中判断某个String字符串是否包含特定字符串,并统计个数。
原理很简单,用空格代替特定字符,然后计算与以前字符串的长度差,再除以 特定字符的长度,即可得出A中所占b的个数。 **方法2:(利用indexOf与substring)**
Petterp
2022/02/09
3.4K0

相似问题

检查字符串是否跟在python regex中的特定字符串列表之后

16

Python get字符串紧跟在参数开关之后

30

如何让列跟在特定列之后?

110

Bash脚本-紧跟在特定短语之后的条目

12

使用Xpath选择紧跟在特定节点之后的特定节点

210
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文