Python raw_input 忽略换行

8 投票
2 回答
19256 浏览
提问于 2025-04-17 11:18

有没有办法在通过raw_input输入数据时忽略换行符?我想用raw_input来输入从电子表格复制粘贴过来的字符串列表。问题是,换行符似乎导致数据提前输入。反正所有的空格都会被去掉,所以在输入数据时去掉换行符会更好。这个数据需要直接通过终端提示输入,而不是从文件中读取。

这是我到目前为止所做的:

names = raw_input('Shoot me some names partner: ')

print 'What do you want to do?'
print '1 - format names for program 1'
print '2 - format names for program 2'

first_act = raw_input('Enter choice: ')

print names
print first_act

现在当我运行这个程序,并输入我在谷歌文档电子表格中放入的测试名字时,一按下shift+ctl+v,没按回车就得到了这个:

seth@linux-1337:~> python pythonproj/names.py
Shoot me some names partner: abcd,efg,hijkl,mnop
abcd,efg,hijkl,mnop
abcd,efg,hijkl,mnop
abcd,efg,hijkl,mnop
abcd,efg,hijkl,mnop
abcd,efg,hijkl,mnop
abcd,efg,hijkl,mnop
abcd,efg,hijkl,mnopWhat do you want to do?
1 - format names for program 1
2 - format names for program 2
Enter choice: abcd,efg,hijkl,mnop
abcd,efg,hijkl,mnop
seth@linux-1337:~> abcd,efg,hijkl,mnop
If 'abcd,efg,hijkl,mnop' is not a typo you can use command-not-found to lookup the package that contains it, like this:
cnf abcd,efg,hijkl,mnop
seth@linux-1337:~> abcd,efg,hijkl,mnop
If 'abcd,efg,hijkl,mnop' is not a typo you can use command-not-found to lookup the package that contains it, like this:
cnf abcd,efg,hijkl,mnop
seth@linux-1337:~> abcd,efg,hijkl,mnop
If 'abcd,efg,hijkl,mnop' is not a typo you can use command-not-found to lookup the package that contains it, like this:
cnf abcd,efg,hijkl,mnop
seth@linux-1337:~> abcd,efg,hijkl,mnop
If 'abcd,efg,hijkl,mnop' is not a typo you can use command-not-found to lookup the package that contains it, like this:
cnf abcd,efg,hijkl,mnop
seth@linux-1337:~> abcd,efg,hijkl,mnop
If 'abcd,efg,hijkl,mnop' is not a typo you can use command-not-found to lookup the package that contains it, like this:
cnf abcd,efg,hijkl,mnop
seth@linux-1337:~> abcd,efg,hijkl,mnop

我对python还很陌生,远不是最有经验的程序员。这是python 2.7。

2 个回答

1

我不太明白你想问什么,但当你使用raw_input()时,它会去掉输入后面的换行符。

文档里也说了这一点。

如果你提供了提示信息,它会被输出到屏幕上,但后面不会加换行符。然后这个函数会从输入中读取一行,把它转成字符串(并去掉后面的换行符),最后返回这个字符串。如果读取到文件结束符(EOF),就会抛出EOFError错误。

7

因为 raw_input 只会读取一行输入,所以你需要创建一个循环:

names = []
print('Shoot me some names partner: ')
while True:
    try:
        name = raw_input()
    except KeyboardInterrupt:
        break
    names.append(name)

print('What do you want to do?')
print('1 - format names for program 1')
print('2 - format names for program 2')

first_act = raw_input('Enter choice: ')

print(names)
print(first_act)

测试运行:

Shoot me some names partner: 
name1
name2
^CWhat do you want to do?
1 - format names for program 1
2 - format names for program 2
Enter choice: 1
['name1', 'name2']
1

注意,我在这里使用了 ^C(Ctrl-C)来表示输入的结束。

撰写回答