2017-09-12 27 views
0

我讀我的Python腳本文件,該文件是這樣的: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() 
+0

也許'X = line.split(); print(x [0],x [-1])'? – Alex

+0

'a = line.split('is')' – JJAACCEeEKK

+0

@JJAACCEeEKK:如果我使用「is」進行分割,這也會被分割。 – Harsha

回答

1

另一種可能性是:

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

如果我沒有記錯,*_不向後兼容,這意味着你需要Python 3.5/6或更高版本(這裏真的需要查看更新日誌)。

0

您可以將結果保存到列表,並獲得第一個和最後一個元素:

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

如果你要打印的每張3元,你可以使用:

res[::3] 

否則,如果你沒有一個特定的模式,你需要手動提取由要素紅外指數。

有關更多詳細信息,請參閱split文檔。

+0

但是,如果字符串變長(例如9個字),我需要1,4,7,9部分? – Nico

+0

@Nico查看我的更新。 – Maroun

+1

@MarounMaroun不需要列表理解。 'res [:: 3]'應該就夠了。 –

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()在字符串中返回的字list,使用月作爲分隔符的字符串。 ...如果未指定sep或爲None,則應用不同的分割算法:將連續空白的運行視爲單個分隔符,並且如果該字符串具有前導或尾隨,則結果將在開始或結束處不包含空字符串空白。

以這種方式,你可以得到你的字符串的第一個和最後一個單詞。

+2

修復最後一個元素:'splitted [-1]'。 – Maroun

0

在第8行,請使用以下的替代

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

使用:

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

在Python負索引,從上次解析。More info

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

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