2012-01-28 131 views
8

有没有办法忽略通过raw_input输入的数据中的换行符?我正在尝试使用raw_input来输入从电子表格复制并粘贴的字符串列表。问题在于看起来新的行字符会导致数据提前输入。所有的空白空间都将被剥离,因此在输入数据时删除换行符会带来额外的好处。这些数据需要直接通过终端提示输入,而不是从文件中读取。python 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 ,没有击中输入我得到这个:

[email protected]:~> 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 
[email protected]:~> 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 
[email protected]:~> 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 
[email protected]:~> 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 
[email protected]:~> 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 
[email protected]:~> 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 
[email protected]:~> abcd,efg,hijkl,mnop 

我很新的python,我不是迄今为止最有经验的程序员。这是python 2.7。

回答

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)这里以指示输入的结束。

+0

嗨,我该如何告诉python我已经完成了我的输入?我尝试了'^ c',但它不起作用。 – 2016-01-11 14:07:49