Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >.split()在python3中创建一个空行

.split()在python3中创建一个空行
EN

Stack Overflow用户
提问于 2013-06-08 19:19:00
回答 3查看 320关注 0票数 0

我正在尝试使用python3将一个'fastq‘文件转换成一个以制表符分隔的文件。下面是输入:(第1-4行是我需要以制表符分隔格式打印的一条记录)。在这里,我尝试将每条记录读入一个列表对象:

代码语言:javascript
运行
AI代码解释
复制
@SEQ_ID
GATTTGGGGTT
+
!''*((((***
@SEQ_ID
GATTTGGGGTT
+
!''*((((***

使用以下命令:

代码语言:javascript
运行
AI代码解释
复制
data = open('sample3.fq')
fq_record = data.read().replace('@', ',@').split(',')
for item in fq_record:
        print(item.replace('\n', '\t').split('\t'))

输出为:

代码语言:javascript
运行
AI代码解释
复制
['']
['@SEQ_ID', 'GATTTGGGGTT', '+', "!''*((((***", '']
['@SEQ_ID', 'GATTTGGGGTT', '+', "!''*((((***", '', '']

我在输出开始时得到一个空行,我不明白为什么??我知道有很多其他的方法可以做到这一点,但我需要在学习python的过程中找出其中的原因。谢谢

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-06-08 19:20:49

当您将@替换为,@时,您需要在字符串的开头加上一个逗号(因为它以@开头)。然后,当您拆分逗号时,在第一个逗号之前没有任何内容,因此这将在拆分中提供一个空字符串。基本上是这样的:

代码语言:javascript
运行
AI代码解释
复制
>>> print ',x'.split(',')
['', 'x']

如果你知道你的数据总是以@开头,你可以跳过循环中的空记录。做for item in fq_record[1:]就行了。

票数 1
EN

Stack Overflow用户

发布于 2013-06-09 02:20:25

您也可以逐行执行,而无需进行所有替换:

代码语言:javascript
运行
AI代码解释
复制
fobj = io.StringIO("""@SEQ_ID
GATTTGGGGTT
+
!''*((((***
@SEQ_ID
GATTTGGGGTT
+
!''*((((***""")

data = []
entry = []
for raw_line in fobj:
    line = raw_line.strip()
    if line.startswith('@'):
        if entry:
            data.append(entry)
        entry = []
    entry.append(line)
data.append(entry)

data看起来像这样:

代码语言:javascript
运行
AI代码解释
复制
[['@SEQ_ID', 'GATTTGGGGTTy', '+', "!''*((((***"],
 ['@SEQ_ID', 'GATTTGGGGTTx', '+', "!''*((((***"]]
票数 0
EN

Stack Overflow用户

发布于 2013-06-09 19:20:39

感谢你们所有人的回答。作为一个初学者,我的主要问题是在.split(',')上出现了一个空行,我现在已经从概念上理解了这一点。所以我用python编写的第一个有用的程序是:

代码语言:javascript
运行
AI代码解释
复制
# this script converts a .fastq file in to .fasta format

import sys 
# Usage statement:
print('\nUsage: fq2fasta.py input-file output-file\n=========================================\n\n')

# define a function for fasta formating
def format_fasta(name, sequence):
fasta_string = '>' + name + "\n" + sequence + '\n'
return fasta_string

# open the file for reading
data = open(sys.argv[1])
# open the file for writing
fasta = open(sys.argv[2], 'wt')
# feed all fastq records in to a list 
fq_records = data.read().replace('@', ',@').split(',')

# iterate through list objects
for item in fq_records[1:]: # this is to avoid the first line which is created as blank by .split() function
    line = item.replace('\n', '\t').split('\t')
    name = line[0]
    sequence = line[1]      
    fasta.write(format_fasta(name, sequence))
fasta.close()

随着我学到更多,答案中建议的其他事情对我来说会更清楚。再次感谢。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17002988

复制
相关文章
在 SwiftUI 中创建一个环形 Slider
Slider 控件是一种允许用户从一系列值中选择一个值的 UI 控件。在 SwiftUI 中,它通常呈现为直线上的拇指选择器。有时将这种类型的选择器呈现为一个圆圈,拇指绕着圆周移动可能会更好。本文介绍如何在 SwiftUI 中定义一个环形的 Slider。
韦弦zhy
2023/01/06
3.8K0
在 SwiftUI 中创建一个环形 Slider
在Excel中再创建一个瀑布图
在前面的系列文章中,我们介绍过几次在Excel中创建瀑布图的技巧。本文再结合特定数据创建一个瀑布图。
fanjy
2023/09/01
3770
在Excel中再创建一个瀑布图
python 删除文件中的空行
res = [x for x in res if x.split()] #将空行从 res 中去掉
全栈程序员站长
2022/09/02
3.6K0
在 Python GTK+ 3 中创建一个框
Windows 用户需要 Windows Subsystem for Linux (WSL)。它在Windows上下文中使用Linux命令和PyGObject。这简化了对库和 GObject Introspection 绑定的访问。
很酷的站长
2023/08/11
4400
在 Python GTK+ 3 中创建一个框
在 Python 中如何快速创建一个只读字典?
不少人喜欢在 Python 项目中,使用字典来存放各种数据。虽然这不是一个好习惯,但是对于少量数据来说,用字典无疑是最简单方便的做法。但前提是,不要一不小心把字典里面的值给覆盖了。
青南
2020/09/14
3.5K0
在 Python 中如何快速创建一个只读字典?
在nodejs中创建cluster
在前面的文章中,我们讲到了可以通过worker_threads来创建新的线程,可以使用child_process来创建新的子进程。本文将会介绍如何创建nodejs的集群cluster。
用户2323866
2021/06/22
3.7K0
在nodejs中创建cluster
在前面的文章中,我们讲到了可以通过worker_threads来创建新的线程,可以使用child_process来创建新的子进程。本文将会介绍如何创建nodejs的集群cluster。
程序那些事
2021/01/28
3.5K0
在DataGrid中创建一个弹出式Details窗口
在DataGrid中创建一个弹出式Details窗口 这篇文章来自DotNetJunkie的提议。他最初写信要求我们提供一个关于如何创建在DataGrid 中使用HyperLinkColumn的例子,可以在用户点击这一列后打开一个新窗口,显示出此列的详细内容。在此之前我们曾经通过email回答他们,他建议我们将这个方法加入他们的指南中,于是,就有了这篇文章。像我们原来的文章一样,它很简单,但是简单的包含代码的方法例可以更有效地启发开发者。 这个例子包含两个WebForms和一个css文件(所有的代码都可
阿新
2018/04/13
2.5K0
在JavaScript中,如何创建一个数组或对象?
1:使用数组字面量(Array Literal)语法,使用方括号 [] 包裹元素,并用逗号分隔:
王小婷
2023/10/23
7940
在JavaScript中,如何创建一个数组或对象?
在 Flutter 移动应用程序中创建一个列表
Flutter 是一个流行的开源工具包,它可用于构建跨平台的应用。在文章《用 Flutter 创建移动应用》中,我已经向大家展示了如何在 Linux 中安装 Flutter 并创建你的第一个应用。而这篇文章,我将向你展示如何在你的应用中添加一个列表,点击每一个列表项可以打开一个新的界面。这是移动应用的一种常见设计方法,你可能以前见过的,下面有一个截图,能帮助你对它有一个更直观的了解:
用户1880875
2021/09/06
3.3K0
在Python3中unescape 将J
首先上下比较发现,js中escape后的字符串与Unicode编码很相似 %u4eba%u751f%u82e6%u77ed \u4eba\u751f\u82e6\u77ed 所以得出以下解决方法,可以将js中escape后的字符串转成utf-8 import urllib.parse escape_str = '%u4eba%u751f%u82e6%u77ed' str1 = escape_str.replace('%u', '\\u') # 得到结果 str1 = '\u4eba\u751f
py3study
2020/01/13
1.3K0
在Python3中使用ssh
  在python3中使用密钥文件方式的ssh。 #encoding: utf-8 #author: walker #date: 2017-03-29 #summary: 在python代码中使用ssh #Python sys.version 3.6.1 (v3.6.1:69c0db5, Mar 21 2017, 18:41:36) [MSC v.1900 64 bit (AMD64)] import paramiko  class SSHUser(object): def __init__(self
py3study
2020/01/06
2.3K0
在IDEA中创建maven项目
  现在的JavaWeb项目中,绝大多数都是采用的maven结构的项目,而对于maven支持的最好的IDE开发工具为IDEA,所以说我就以在IDEA上为例来进行maven开发的讲解。
全栈程序员站长
2022/06/25
3.2K0
在IDEA中创建maven项目
在React 中,如何创建refs?
在类组件中,可以使用 React.createRef() 方法来创建 ref 对象。通常,在组件的构造函数中将 ref 赋值给类的实例属性。
王小婷
2023/10/10
5390
在Docker中创建私有仓库
随着创建的镜像日益增多,就需要有一个保存镜像的地方,这就是仓库。目前有两种仓库:公共仓库和私有仓库。最方便的就是使用公共仓库上传和下载镜像,下载公共仓库中的镜像不需要注册,但上传镜像到公共仓库是需要注册的。公共仓库中填写完成仓库的ID号、邮箱以及登录仓库的密码并在邮件中进行激活就可以上传自己的镜像。
星哥玩云
2022/07/28
3K0
在Docker中创建私有仓库
在nodejs中创建child process
nodejs的main event loop是单线程的,nodejs本身也维护着Worker Pool用来处理一些耗时的操作,我们还可以通过使用nodejs提供的worker_threads来手动创建新的线程来执行自己的任务。
程序那些事
2021/01/28
3.8K0
在Excel中创建瀑布图
在Excel中很容易创建瀑布图,因为自Excel 2016就推出了瀑布图。然而,改变瀑布颜色稍微有点困难。
fanjy
2023/08/30
9150
在Excel中创建瀑布图
怎样在 Unity 中创建 UI
在现在每一个软件应用中,用户界面(UI)都是核心的特征。游戏也没有抛弃这一规则。有非常多的游戏都使用 UI 来显示一些信息,比如生命值,技能,地图,武器的弹药,等等。 Unity 3D 提供了许多 UI 组件,你都可以在你的游戏中使用它们。在这篇文章中,我会指导你在 unity 的菜单中如何创建一个简单的暂停菜单。这个暂停菜单将显示一个内容为『Paused』的 text 组件和三个按钮组件:分别是复位按钮『Resume』,重新开始按钮『Restart』,退出按钮『Quit』,并且还是显示游戏从场景加载到现在的时间。在这篇文章的最后,你应该创建出了类似下面的界面:
hrscy
2018/08/30
5.9K0
怎样在 Unity 中创建 UI
在TKE中创建服务-Service
在k8s中 service是搭配着pod使用,service定义了一个服务的入口地址,通过访问service地址访问到对应的pod。
马凌鑫
2019/04/10
3.4K0
在nodejs中创建child process
nodejs的main event loop是单线程的,nodejs本身也维护着Worker Pool用来处理一些耗时的操作,我们还可以通过使用nodejs提供的worker_threads来手动创建新的线程来执行自己的任务。
用户2323866
2021/06/22
3.5K0

相似问题

pandas & split()在excel中生成空行

114

javascript split("\n\r")在空行中添加逗号

20

PHP:使用preg_split在空行上拆分

13

在dbgrid中创建空行

10

如何使用.Split()在空行上拆分字符串?

10
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

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

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档