2017-04-30 4 views
-1

私はかなり研究していますが、次のPythonコードを使用して名前と住所のデータを大文字にする方法を見つけましたが、原子エディタ '、コードを書くための' Powershell '多くのデータの先頭文字をどのように大文字にしますか?

生データ:

john deere 
apt. no. 23, 
9th floor, sixth avenue, 
michael street, new arc, 
edmonton, canada. 

コード

value = """john deere apt. 
     no. 23, 9th floor, 
     sixth avenue, michael street, 
     new arc, 
     edmonton, 
     canada. 
     """ 
# Convert to title case. 
result = value.title() 
print(result) 

結果:私はこのような名前である&アドレス "の最初の文字を大文字にする必要がある場合

John Deere 
Apt. No. 23, 
9th Floor, Sixth Avenue, 
Michael Street, New Arc, 
Edmonton, Canada. 

今すぐ仮定ノートパッド 'を一度に20個、どのようにすることができますか?データと、それを出力として「メモ帳」に戻すにはどうすればいいですか?誰かが私を導くことができれば、私はとても感謝しています。データはメモ帳

  1.  

    john deere 
    apt. no. 23, 
    9th floor, sixth avenue, 
    michael street, new arc, 
    edmonton, canada. 
    
  2.  

    peter simons. 
    ..address here. 
    ......... 
    .......... 
    
  3.  

    にどのように表示されるか

    ですようになど

    florence nightingale 
    ........... 
    ........... 
    .......... 
    

....

+0

が親切に最良の答えをマーク:

がこれを行う方法を説明するために、ここでは前述の2問題の例を回避しますreを使用するように修正前のコードとカスタムの正規表現パターンです –

答えて

0

あなたは実際のファイルの内容を上書きしたくない場合は、新しいファイルに出力を書き込むことができます。ただし、同じファイルを使用している場合、ファイル名はdata.txtとしましょう。

with open('data.txt', 'w+') as f: 
    data = f.read() 
    data = data.title() 
    f.write(data) 
0

これは機能するはずです。

f = open("infile.txt", "r") # change this with your file name, open your source file to read 
out = open("outfile.txt", "w") # open your output file to write 
for line in f: # read from input line by line 
    out.write(line.title()) # write to your output line by line 
0

最も簡単な方法は、fileinputモジュールを使用することです。それはファイルの内部をで処理することを非常に簡単にし、場合によってはバックアップファイルを作成することさえできます。

ここではあなたの問題を解決するためにそれを使用する方法は次のとおりです。ただし

import fileinput 

filename = 'addresses.txt' 
backup = '.bak' # will create backup file named 'addresses.txt.bak' 

with fileinput.input(filename, inplace=True, backup=backup) as file: 
    for line in file: 
     print(line.title(), end='') # end='' suppresses extra newline normally added 

print('done') 

.title()方法は、常にそれが認識するので、それは"Sak'S 5Th Ave""sak's 5th ave"ような何かを回すようなことを行いますので、正常に動作するつもりはない文字列を使用して、単語は単に連続した文字の任意のグループである。

これらの問題の回避策の1つは、独自のカスタムワードパターンマッチングロジックを定義するPythonの正規表現(正規表現)モジュールreを使用することです。

import re 

def titlecase(s): 
    return re.sub(r"\b[A-Za-z]+('[A-Za-z]+)?", 
        lambda mo: mo.group(0)[0].upper() + mo.group(0)[1:].lower(), 
        s) 

filename = 'addresses.txt' 
backup = '.bak' # will create backup file named 'addresses.txt.bak' 

with fileinput.input(filename, inplace=True, backup=backup) as file: 
    for line in file: 
     print(titlecase(line), end='') # end='' suppresses extra newline normally added 

print('done') 
関連する問題