python - 从python文件中获取字符串

标签 python string

我有一个文本文件,我想根据变量 site 从中提取某个字符串,该变量表示某个字符的位置。我想提取 site 位置前后 20 个字符。 如果 site 的值超过 20,我的代码可以正常工作。但如果 site 之前的字符少于 20 个,则它不会返回任何内容。

例如,我这里有一个字符串,其中 site=5 在本例中为 K

MSGRGKGGKGLGKGGAKRHRKVLRDXYZX

现在我正在尝试提取字符K前后的20个字符。 下面是我的代码;

data=myfile.read()    
str1 = data[site:site+1+20]
temp = data[site-20:site]
final_sequence = temp+str1
print final_sequence

这给了我一个 KGGKGLGKGGAKRHRKVLRDX 的输出。由于找不到 K 之前的 20 个字符,因此它没有打印 K 之前的字符。

正确的应该是MSGRGKGGKGLGKGGAKRHRKVLRDX

这引出了我的问题。如果 K 值下游的字符少于 20 个,如何修改代码以打印 K 之前的所有字符? 谢谢。

最佳答案

问题是,由于 site-20 为负,Python 认为它是相对于序列末尾的索引,因此切片是空的(因为第一个索引在最后一个索引之后) )。只要确保永远不会低于 0。

data=myfile.read()    
str1 = data[site:site+1+20]
temp = data[max(site-20, 0):site]
final_sequence = temp+str1
print final_sequence

或更短

data=myfile.read()    
final_sequence = data[max(site-20, 0):site+1+20]
print final_sequence

请注意,您不需要使用 min(site+1+20, len(data)) 作为上限,因为 Python 会自动将超出序列末尾的切片索引剪切到序列中长度。

关于python - 从python文件中获取字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43911184/

相关文章:

python - 使用 ID 创建对象并填充其他字段

python - 后缀树 : locating a substring if a certain number of mistakes are allowed

python - 执行 docker exec 命令时 python 脚本的执行挂起

javascript - 任何数字的正则表达式,不包括特定数字

javascript - 如何切片 String 对象直到它到达 "/"标记?

python - 在Python中使用groupby方法,包含示例

python - 使用 Flask 和 Python 3 测试文件上传

java - .txt 文件的大小和磁盘上的大小

c++ - 问题解析字符串

java - 有没有一种简单的方法可以将几行文本连接成一个字符串而无需不断添加换行符?