在Python中将多行字符串作为一行读取

时间:2013-08-21 23:45:53

标签: python

我正在编写一个程序,逐行分析大型目录文本文件。在这样做时,我试图提取文件的不同部分并将它们分类为“名称”,“地址”等。但是,由于文件的格式,我遇到了问题。我所拥有的一些文本分为两行,例如:

'123 ABCDEF ST
APT 456'

我怎样才能做到这一点,即使通过逐行分析,Python也会以

的形式将其作为单行字符串返回

'123 ABCDEF ST APT 456'

6 个答案:

答案 0 :(得分:8)

如果你想删除换行符:

"".join( my_string.splitlines())

答案 1 :(得分:3)

如果您在屏幕上打印文件,假设您正在使用Windows,则会看到

'123 ABCDEF ST\nAPT 456\n'

\n代表换行符。

所以有很多方法可以摆脱文件中的新行。一种简单的方法是将字符串拆分为换行符,然后重新加入列表中的项目,这些项目将在您执行拆分时创建

 myList = [item for item in myFile.split('\n')]
 newString = ' '.join(myList)

答案 2 :(得分:2)

用空格替换换行符:

address = '123 ABCDEF ST\nAPT 456\n'
address.replace("\n", " ")

答案 3 :(得分: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()

答案 4 :(得分:0)

假设您正在使用以下内容迭代文件:

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

并且假设文本文件中的字符串用单引号分隔,我会这样做:

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

虽然这是很多假设。

答案 5 :(得分:0)

我想我可能已经找到了一个简单的解决方案,只需将.replace('\n', " ")放在您要转换的任何字符串上

示例u

my_string = "hi i am an programmer\nand i like to code in python"

喜欢任何东西,如果您要转换它,就可以做

my_string.replace('\n', " ")

希望有帮助