8

大きなディレクトリ テキスト ファイルを 1 行ずつ分析するプログラムを作成しています。そうすることで、ファイルのさまざまな部分を抽出し、それらを「名前」、「アドレス」などとして分類しようとしています。ただし、ファイルの形式が原因で、問題が発生しています。私が持っているテキストの一部は、次のように 2 行に分割されています。

'123 ABCDEF ST
APT 456'

行ごとの分析でも、Pythonがこれを次の形式の単一行の文字列として返すようにするにはどうすればよいですか

'123 ABCDEF ST APT 456'?

4

6 に答える 6

14

改行を削除したい場合:

"".join( my_string.splitlines())
于 2013-08-21T23:55:46.203 に答える
4

ファイルを画面に印刷すると、Windowsを使用していると仮定すると、次のように表示されます

'123 ABCDEF ST\nAPT 456\n'

\n改行を表します。

そのため、ファイル内の新しい行を取り除く方法はいくつかあります。簡単な方法の 1 つは、文字列を改行文字で分割し、分割したときに作成されるリストからアイテムを再結合することです。

 myList = [item for item in myFile.split('\n')]
 newString = ' '.join(myList)
于 2013-08-21T23:55:27.807 に答える
3

改行をスペースに置き換えるには:

address = '123 ABCDEF ST\nAPT 456\n'
address.replace("\n", " ")
于 2013-08-22T00:16:52.903 に答える
1
import re

def mergeline(c, l): 
    if c: return c.rstrip() + " " + l 
    else: return l

def getline(fname):
    qstart = re.compile(r'^\'[^\']*$')
    qend   = re.compile(r'.*\'$')
    with open(fname) as f:
        linecache, halfline = ("", False)
        for line in f:

            if not halfline: linecache = ""  
            linecache = mergeline(linecache, line)

            if halfline: halfline = not re.match(qend, line)
            else: halfline = re.match(qstart, line)

            if not halfline: 
                yield linecache
        if halfline: 
            yield linecache

for line in getline('input'):
    print line.rstrip()
于 2013-08-22T00:27:27.920 に答える
0

次のようなファイルを繰り返し処理していると仮定します。

with open('myfile.txt') as fh:
  for line in fh:
    # Code here

また、テキスト ファイル内の文字列が一重引用符で区切られていると仮定すると、次のようになります。

while not line.endswith("'"):
  line += next(fh)

しかし、それは多くの仮定です。

于 2013-08-22T00:11:20.130 に答える