Python中的显式行连接
我正在逐行读取一个文件,并进行一些文本处理,以便输出成特定的格式。我的字符串处理代码如下:
file1=open('/myfolder/testfile.txt')
scanlines=file1.readlines()
string = ''
for line in scanlines:
if line.startswith('>from'):
continue
if line.startswith('*'):
continue
string.join(line.rstrip('\n'))
这段代码的输出结果是:
abc
def
ghi
有没有办法把这些物理行合并成一行逻辑行,比如:
abcdefghi
简单来说,我该如何把多个字符串连接成一个大字符串呢?
如果我从一个包含非常长字符串的文件中读取数据,合并多个物理行成一行逻辑行时,会不会有溢出的风险呢?
4 个回答
2
使用字符串相加
>>> s = 'a'
>>> s += 'b'
>>> s
'ab'
5
有好几种方法可以做到这一点。比如,直接用 +
就可以了。
"abc" + "def" # 结果是 "abcdef"
如果你想把多个字符串连接在一起,可以使用 join 方法:
', '.join(('abc', 'def', 'ghi')) # produces 'abc, def, ghi'
如果你不想要任何分隔符,可以用空字符串 ''.join()
方法。
3
稍微整理一下,最简单的方法是把内容添加到数组中,然后返回结果。
def joinfile(filename) :
sarray = []
with open(filename) as fd :
for line in fd :
if line.startswith('>from') or line.startswith('*'):
continue
sarray.append(line.rstrip('\n'))
return ''.join(sarray)
如果你想让代码看起来更酷一些,你还可以这样做:
fd = open(filename)
str = ''.join([line.rstrip('\n') for line in fd if not (line.startswith('>from') or line.startswith('*'))])
当然,你可以读取一个足够大的文件,这样就会超出内存的限制。