所以,我已经有了代码来从文本中获取带有数字的所有单词,现在我需要做的就是将文本全部放在一行中。
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
答案 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