将文本添加到文件中的一行

时间:2013-09-04 22:15:16

标签: python string file text

我有一个包含数字,空格和名称的文本文件 例如:
12鸡 1面包
24森林

我对python很新,但我想知道是否有一种方法可以将文本添加到该列表中,以便它可以变成:

好吃的东西列表
对我来说12号鸡肉 我的面包第一

我写了下面的代码,但是我仍然有问题要在行的中间添加“of”。

import fileinput
import sys

for line in fileinput.input(['./lista.txt'], inplace=True):
    if fileinput.filelineno() == 1:
         sys.stdout.write('list of goodies{l} \n'.format(l=line)) 

    sys.stdout.write( '{0}{1}{2}'.format('number', line.rstrip('\n'), 'for me \n'))

我还没有清楚地理解.format的使用

2 个答案:

答案 0 :(得分:0)

转过来#12; 12鸡肉"进入" 12鸡和#34;,你需要split将这些行转换为单词,然后join将它们与" "在中间。例如:

s = '12 chicken'
print(s.split())
print(" of ".join(s.split()))

产生这个:

['12', 'chicken']
12 of chicken

将其应用于循环中的line

进一步说明:我会尽力帮助您更好地理解format()'{0}{1}{2}'表示将第一个,第二个和第三个参数带到format()并将它们连接起来。例如,在表达式'{0}{1}{2}'.format('number', line.rstrip('\n'), 'for me \n')中:

  • {0}对应'number'
  • {1}对应line.rstrip('\n')(例如"12 chicken"
  • {2}对应'for me \n'

要将"12 chicken"替换为"12 of chicken",您需要将line.rstrip('\n')替换为s " of ".join(s.split()),生成" of ".join(line.rstrip('\n').split())

答案 1 :(得分:0)

尝试做:

import fileinput
import sys

print 'list of goodies'
for line in fileinput.input(['./lista.txt'], inplace=True):
    number, item = line.rstrip().split(' ', 1) # strip new line from right, split on first space
    print 'number {0} of {1} for me'.format(number, item)

基本上,format接受许多字符串参数,然后将其插入到您调用它的字符串中,代替标识符{0},{1},...其中数字表示它在参数列表中的位置。如果你提供一个命名参数(l = line),它将被插入到弹出{argname}的字符串中。 E.g:

print '{0}.{0}-{1}:{test}'.format('first','second', test='third')

将打印

first.first-second:third