2017-09-12 10 views
0

を使用していない私はこのようになります私のPythonスクリプトでファイルを読んでいます:Python文字列の分割及び中央部に

#im a useless comment 
this is important 

を私が読み、分割「これは重要である」の部分をして無視するスクリプトを書きましたコメント行は#で始まります。

私は最初と最後の単語が必要です(私の場合は "this"と "important")。

私は分割の特定の部分を必要としないことをPythonに伝える方法はありますか?

私の例では、私は欲しいものを持っています。

しかし、文字列が長く、未使用の変数が10個あるような場合は、プログラマが行うようなものではないと私は推測します。あなたはそれぞれの第三要素を印刷したい場合は、あなたを

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

#!/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以上が必要であることを意味します(実際にはここで変更履歴を調べる必要があります)。 (re.search()機能付き)複数行テキストの

0

あなたは最初と最後の要素をリストに結果を保存し、取得することができます:ここで

は私のコードです使用することができます:

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()は、区切り文字列として9月を使用して、文字列内の単語のlistを返します。 ... sepが指定されていないかNoneの場合、異なる分割アルゴリズムが適用されます。連続する空白の実行は単一のセパレータとみなされ、先頭または末尾に空の文字列は含まれません空白。

このようにして、文字列の最初と最後の単語を取得できます。 8行目で

+2

最後の要素を 'splitted [-1]'に修正しました。 – Maroun

0

、次の代わりに、

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

使用使用:Pythonで

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

負のインデックスは、最後から解析します。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

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 
関連する問題