2017-12-12 11 views
-3

ランダムな文字、数字、文字を含むテキストファイルがあります。私は特殊文字を削除しなければならず、プロセスを印刷している間だけ英数字に終わる。新しい行にPythonプログラムを印刷しないでください。

Line read' ,,s.8,ymsw5w-86  
' 

' ,,s.8,ymsw5w-86 

'->' s8ymsw5w86 ' 

をテキストではなく、このように4の、唯一の2行に行く必要があるときは:私のプログラムが印刷されたいくつかの理由

Line read' ,,s.8,ymsw5w-86' 

' ,,s.8,ymsw5w-86' -> 's8ymsw5w86' 

私が間違っているのか理解していません。これは私のコードです:

file1=open(textfile1,"r") 

for line in file1: 

    line2="".join(filter(str.isalnum,line)) 

    print("Line read","'",str(line),"'") 

    print("'",str(line),"'->'",line2,"'") 

ありがとうございます。

+0

あなたの質問は非常にジ読むのが難しい。それを[フォーマット](https://stackoverflow.com/editing-help)してみてください。入力ファイルに正確に何が含まれているか、そして期待される出力が何であるかを知ることは難しいです。 – Galen

+0

python printはデフォルトで改行を挿入します。これを無効にすることができます。 – Bobby

+0

[印刷](https://docs.python.org/3/library/functions.html#print)は、そうでないことと、ファイルの行に改行文字がある場合を除き、改行を出力します。 – wwii

答えて

1

ファイルの各行の最後に改行文字があります。あなたはそれを印刷したくない場合は、f-stringsを使用して

print("Line read","'",str(line.strip()),"'") 
print("'",str(line.strip()),"'->'",line2,"'") 

s1 = ',,s.8,ymsw5w-86 \n' 
s2 = ' ,,s.8,ymsw5w-86\n' 
s3 = ' s8ymsw5w86 \n' 

それを取り除く:あなたは、文字列内の単一引用符をしたい場合は、二重引用符で文字列を囲み、VIS-その逆

print(f"'{s1.strip()}'") 
print(f"'{s2.strip()}' --> '{s3.strip()}'") 


>>> 
',,s.8,ymsw5w-86' 
',,s.8,ymsw5w-86' --> 's8ymsw5w86' 
>>> 

または

s1 = ',,s.8,ymsw5w-86 \n' 
s2 = "".join(filter(str.isalnum,s1)) 

print(f"Line read ... '{s1.strip()}'") 
print(f"'{s1.strip()}' --> '{s2.strip()}'") 

>>> 
Line read ... ',,s.8,ymsw5w-86' 
',,s.8,ymsw5w-86' --> 's8ymsw5w86' 
>>> 
+0

まだ私は要求したように2つの別々の行に印刷していません:(今は3行に印刷しています – Jaakkath

+0

すばらしい、ありがとう!私はまだ何とか '(アポストロフィー?)をテキストに近づける必要があります – Jaakkath

+0

このようなテキストの隣に: 'asdf55'、現在は間に空白があり、rstrip()は動作していないようです。 – Jaakkath

関連する問題