8

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

'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换行符。

所以有很多方法可以去掉文件中的新行。一种简单的方法是在换行符上拆分字符串,然后从列表中重新加入将在您进行拆分时创建的项目

 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 回答
0

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

你有的例子

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

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

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

希望能帮助到你

于 2020-05-17T12:53:14.980 回答