我需要将输出放在一行中

时间:2012-08-08 02:45:10

标签: python python-3.x

所以,我已经有了代码来从文本中获取带有数字的所有单词,现在我需要做的就是将文本全部放在一行中。

with open("lolpa.txt") as f:
    for word in f.readline().split():
        digits = [c for c in word if c.isdigit()]
        if not digits:
            print(word)

分割使单词全部位于不同的列中。 如果我取出.split(),它会输入没有数字的单词,只是从单词中取出数字,并使每个字母都在不同的列中。

编辑:是的,print(word,end=" ")有效,谢谢。但我也希望脚本现在只读一行。它无法读取第2行或第3行等的任何内容。

第二个问题是脚本只读取FIRST行。所以如果第一行的输入是

i li4ke l0ke like p0tatoes potatoes
300 bla-bla-bla 00bla-bla-0211

输出将是

i like potatoes

4 个答案:

答案 0 :(得分:5)

在Python v 3.x中,您将使用

print(word, end='')

避免换行。

在Python v 2.x

print word,

您将在要打印的项目末尾使用逗号。请注意,与v3不同,您将在连续打印之间获得一个空格

请注意,print(word),不会阻止v 3.x中的换行符。

-

基于原始帖子重新编码问题中的编辑

更新

输入:

i li4ke l0ke like p0tatoes potatoes
300 bla-bla-bla 00bla-bla-0211

此代码:

def hasDigit(w):
   for c in w:
      if c.isdigit():
         return True
   return False

with open("data.txt") as f:
    for line in f:
        digits = [w for w in line.split() if not hasDigit(w)]
        if digits:
            print ' '.join(digits)
#   break  # uncomment the "break" if you ONLY want to process the first line 

将产生所有不包含数字的“单词”:

i like potatoes
bla-bla-bla    <-- this line won't show if the "break" is uncommented above

注意

如果您只想处理 文件的第一行,如果问题是您的脚本

该帖子有点不清楚em>处理第一行。此解决方案可以以任何方式工作,具体取决于break语句是否已注释掉。

答案 1 :(得分:0)

如果您使用的是python 3.x,则可以执行以下操作:

 print (word,end="")

来抑制换行符 - python 2.x使用了一些奇怪的语法:

 print word,  #trailing comma

或者,使用sys.stdout.write(str(word))。 (这适用于python 2.x和3.x)。

答案 2 :(得分:0)

with open("lolpa.txt") as f:
    for word in f.readline().split():
        digits = [c for c in word if c.isdigit()]
        if not digits:
            print word,
    print

,结束时不print

答案 3 :(得分:0)

您可以使用join()

with open("lolpa.txt") as f:
    print ' '.join(str(x.split()) for x in f if not [c for c in x.split() if c.isdigit()])        

使用简单的for循环:

import sys
with open("data.txt") as f: 
    for x in f:                #loop over f not f.readline()
        word=x.split()
        digits = [c for c in word if c.isdigit()]
        if not digits:
            sys.stdout.write(str(word))  #from mgilson's solution