我有一个包含数字,空格和名称的文本文件
例如:
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的使用
答案 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