Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/298.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python字符串拆分,不使用中间部分_Python_Split - Fatal编程技术网

Python字符串拆分,不使用中间部分

Python字符串拆分,不使用中间部分,python,split,Python,Split,我正在用Python脚本读取一个文件,如下所示: #im a useless comment this is important 我编写了一个脚本来阅读和拆分“这很重要”部分,并忽略以#开头的注释行 我只需要第一个和最后一个词(在我的例子中是“this”和“important”) 有没有办法告诉Python我不需要拆分的某些部分 在我的例子中,我得到了我想要的,并且它是有效的 然而,如果字符串更长,并且我有10个未使用的变量,我认为程序员不会这样做 这是我的密码: #!/usr/bin/pyt

我正在用Python脚本读取一个文件,如下所示:

#im a useless comment
this is important
我编写了一个脚本来阅读和拆分“这很重要”部分,并忽略以
#
开头的注释行

我只需要第一个和最后一个词(在我的例子中是“this”和“important”)

有没有办法告诉Python我不需要拆分的某些部分

在我的例子中,我得到了我想要的,并且它是有效的

然而,如果字符串更长,并且我有10个未使用的变量,我认为程序员不会这样做

这是我的密码:

#!/usr/bin/python3

import re

filehandle = open("file")
for line in file:

    if re.search("#",line):
        break;
    else:
        a,b,c = line.split(" ")
        print(a)
        print(b)

filehandle.close()

您可以将结果保存到列表中,并获取第一个和最后一个元素:

res = line.split(" ")
# res[0] and res[-1]
如果要打印每个第三个元素,可以使用:

res[::3]
否则,如果没有特定的模式,则需要根据元素的索引手动提取元素


有关更多详细信息,请参阅文档。

如果我理解了您的问题,您可以尝试以下方法:

s = "this is a very very very veeeery foo bar bazzed looong string"
splitted = s.split() # splitted is a list
splitted[0] # first element
splitted[-1] # last element
返回字符串中单词的
列表,使用sep作为分隔符字符串。。。如果未指定sep或sep为None,则应用不同的拆分算法:连续空格的运行被视为单个分隔符,如果字符串具有前导或尾随空格,则结果的开头或结尾将不包含空字符串


这样,您就可以获得字符串的第一个和最后一个单词。

在第8行,使用以下内容代替

a,b,c = line.split(" ")
使用:


python中的负索引,解析自上一个

我认为
python负索引
可以解决您的问题

import re

filehandle = open("file")
for line in file:

    if re.search("#",line):
        break;
    else:
        split_word = line.split()
        print(split_word[0]) #First Word
        print(split_word[-1]) #Last Word

filehandle.close()

阅读更多关于

的信息另一种可能性是:

a, *_, b = line.split()
print(a, b)
# <a> <b>
a,*.\b=line.split()
印刷品(a、b)
#  
如果我没记错的话,
*.
是不向后兼容的,这意味着您需要Python 3.5/6或更高版本(实际上需要查看此处的更改日志)。

对于多行文本(使用
re.search()
函数):

输出:

this important

可能
x=line.split();打印(x[0],x[-1])
a=line.split('is')
@JJAACCEeEKK:如果我使用“is”进行拆分,这也会被拆分。对于您正在处理的
line.split()
优于
line.split(“”
)。阅读关于str.split的更多信息“如果未指定sep或sep为None,则应用不同的拆分算法:连续空格的运行被视为单个分隔符,如果字符串具有前导或尾随空格,则结果的开头或结尾将不包含空字符串。”将最后一个元素修复为:
splited[-1]
。但是如果字符串变长(例如9个单词),并且我需要1,4,7,9部分?@marounnaroun,则不需要理解列表
res[::3]
就足够了。
import re

with open('yourfile.txt', 'r') as f:
    result = re.search(r'^(\w+).+?(\w+)$', f.read(), re.M)
    a,b = result.group(1), result.group(2)
    print(a,b)
this important