2011-07-16 12 views
0

私は、それはそれを変換リストリストにバック[Pythonの]

を編集するStringに一覧からの変換についての問題のGot私は、ファイルのテキストコンテンツにこれらの名前を持つ

Roby 
Bucky 
johan 

それから私は、私は、このコード

Names='a.txt' # here is the names 
O=open(Names,'r') # we open the file content the names 
iamList=O.readlines() # read the name it would be List ! 
imSting=str(iamList) # convert it to string 
Edit=imSting.replace(r"\n","Ok:1") # Editing by adding 
noname=Edit 
noname=noname.split() 
for PT in noname: 
    PT.strip('[') 
    print PT 

を行うと、私はトンを持って、それぞれ1 OK:1

の横に追加します彼の結果 ['RobyOk:1', 'BuckyOk:1', 'johan']私はstripreplace('[','')

任意のアイデアを試してみました[ , ' これらの事を削除したい ?

+1

データを1つの文字列からリストに変換し、文字列に戻した後、リストに戻すことはほとんどありません(出力のためにもう一度文字列に変換することのみです)。 (あなたの場合、 'readlines'の出力はおそらく理想的です)、最後にダウングレードするだけです。基本的に、' str() 'を取り除くと、あなたは必要ありません – SingleNegationElimination

答えて

2

[b.replace("\n","") + "Ok:1" for b in open("C:\\py\\a.txt","r")] 

「拡張」バージョン:

はこれを試してみてください。

あなたはこのようなlist comprehensionでそれを行うことができます:な改行など

iamNewList = [] 
for e in iamList: 
    iamNewList.append(e.rstrip() + 'Ok:1') 

注意、rstripストリップすべての空白、:あまり派手なことを、あなたがこれを行うことができ、また

iamNewList = [e.rstrip() + 'Ok:1' for e in iamList] 

私はあなたが望むものと思っています。

+0

彼は 'readlines'の呼び出しから' iamList'を塗りつぶすので、あなたのコードは改行の後ではなく、 '' Ok:1 ''を持っています。 –

+0

@スティーブン:ありがとう、固定。 :) –

0

iamList = O.readlines()あなたにリストが表示されます。

このリストを文字列に変換したくない場合。すべてのコストで文字列操作を避ける。それは悪いコーディング慣行です。(このような理由から、私はまた、あなたがそれぞれの文字列に'Ok:1'を追加している理由が心配です。)追加したいなぜあなたが言うべきしかし

は代わりに、ちょうど

[x+' OKAY!' for x in yourFile.read().splitlines()]を行い、「OK:1」あなたが間違ったやり方をしているように思われるからです。 あなたは実際に何をしようとしているのでしょうか。

+0

'readlines'は行末を取り除いていないので' x'が 'Roby'なら' x + 'OKAY!' 'は' Roby \ nOKAY! 'になります。 –

+0

@スティーブン:ありがとう、急いで、固定 – ninjagecko

0

コードが機能しません。最後の行には最後に改行がないので、「Ok:1」はありません。あなたは、各要素の終わりにOk:1を追加するための文字列に変換する必要はありません

newList = [] 
for b in open("C:\\py\\a.txt","r"): 
    newList.append(b.replace("\n","") + "Ok:1") 
+0

私はそれを得ることはできません,,,最後の行の問題は、リストで新しい行を追加するか、またはそれを編集して修正するのは簡単ですが,,, [ '' –

+0

あなたのリストが文字列の詐欺にかかっているからです。私のコード行リストの理解です。 – Jacob

+0

彼はreadlineへの呼び出しからiamListを埋め込むので、あなたのコードは改行の後ではなく、 "Ok:1"になります。 –

1

ソリューション:os.linesep(一般的には '\ n' は)あなたのファイルで使用される行別離と異なることができるので、

f = open('a.txt') 
names = [line.strip() + 'Ok:1' for line in f.readlines()] 
f.close() 
for name in names: 
    print(name) 

私は、 'line.stripを()' を使用しました各行はまだ '\ n'のままです。あなたのアプローチについて

: iamListは がすでにブラケット「[」とコンマが含まれてい一覧、STR(iamList)で作成したリストの表現だったので「」: これらの文字列表現の一部です。 print('imSting: ' + imSting)が表示されます。 だから、「OK:1」で「\ n」を交換している可能性が右imStingからと「」の部分の上にリストに 新しい文字列をspliting:

(imSting.replace(r"\n", 'Ok:1')[2:-2] + 'Ok:1').split("', '")

[2:-2]しか返します['と']の間の文字を削除し、かっこを効果的に削除します。

最初の解決策はほぼ1ライナーになる可能性があり、読むのがはるかに簡単で、したがってPythonの方がずっと簡単です。 しかし、読んだ後にファイルを閉じるという方が良いです。