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

问题描述 投票:0回答:6

我正在编写一个程序,逐行分析一个大目录文本文件。在此过程中,我尝试提取文件的不同部分并将它们分类为“名称”、“地址”等。但是,由于文件的格式,我遇到了问题。我的一些文本被分成两行,例如:

'123 ABCDEF ST
APT 456'

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

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

'123 ABCDEF ST APT 456'

python string multiline heredoc
6个回答
16
投票

如果你想删除换行符:

"".join( my_string.splitlines())

4
投票

假设您使用的是 Windows,如果您将文件打印到屏幕上,您将看到

'123 ABCDEF ST\nAPT 456\n'

\n
代表换行符。

因此有多种方法可以删除文件中的新行。 一种简单的方法是在换行符上拆分字符串,然后重新加入拆分时将创建的列表中的项目

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

3
投票

用空格替换换行符:

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

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()

0
投票

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

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

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

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

不过,这有很多假设。


0
投票

我想我可能找到了一个简单的解决方案,只需将

.replace('\n', " ")
放入你想要转换的任何字符串

你有的例子

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

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

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

希望有帮助

© www.soinside.com 2019 - 2024. All rights reserved.