0

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

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

好吃的东西清单
12 号鸡肉给我
1 号面包给我

我编写了以下代码,但在行中间添加“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 的使用

4

2 回答 2

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} 弹出的字符串中。例如:

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

将打印

first.first-second:third
于 2013-09-04T22:58:54.013 回答
0

要将“12 chicken”变成“12 of chicken”,您需要将这split行转换成单词,然后join将它们与中间的“of”重新组合在一起。例如:

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')in s" of ".join(s.split())生产" of ".join(line.rstrip('\n').split())

于 2013-09-04T22:21:49.133 回答