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

时间:2017-09-12 11:40:39

标签: python split

我正在读取Python脚本中的文件,如下所示:

#im a useless comment
this is important

我写了一个脚本来阅读和分割"这很重要"部分并忽略以#开头的注释行。

我只需要第一个和最后一个词(在我的情况下"这个"和#34;重要")。

有没有办法告诉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()

6 个答案:

答案 0 :(得分:1)

另一种可能性是:

a, *_, b = line.split()
print(a, b)
# <a> <b>

如果我没记错的话,*_不向后兼容,这意味着你需要Python 3.5 / 6或更高版本(这里真的需要查看更改日志)。

答案 1 :(得分:0)

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

res = line.split(" ")
# res[0] and res[-1]

如果要打印每个第3个元素,可以使用:

res[::3]

否则,如果您没有特定模式,则需要按索引手动提取元素。

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

答案 2 :(得分:0)

如果我理解了你的问题,你可以试试这个:

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

str.split()使用sep作为分隔符字符串,返回字符串中的list个单词。 ...如果未指定sep或为None,则应用不同的拆分算法:连续空格的运行被视为单个分隔符,如果字符串具有前导或尾随,则结果将在开头或结尾处不包含空字符串空格。

通过这种方式,您可以获得字符串的第一个和最后一个字。

答案 3 :(得分:0)

在第8行,使用以下代替

a,b,c = line.split(" ")

使用:

splitLines = line.split(" ")
a, b, c = splitLines[0], splitLines[1:-1], splitLines[-1]

python中的负索引,从最后一个解析。 More info

答案 4 :(得分:0)

我认为python negative indexing可以解决您的问题

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()

详细了解Python Negative Index

答案 5 :(得分:0)

对于多行文字(re.search()功能):

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